创可贴设计网站官网,广州网站推广哪家强,陕西汉中网站建设,做网站空间百度云和阿里云区别netflix为了继续上一篇有关Netflix Governator的一些基础知识的文章#xff0c;在这里#xff0c;我将介绍Netflix Governator带给Google Guice的另一项增强功能–生命周期管理 生命周期管理本质上提供了进入对象所经历的不同生命周期阶段的钩子#xff0c;以引用有关Gover… netflix 为了继续上一篇有关Netflix Governator的一些基础知识的文章在这里我将介绍Netflix Governator带给Google Guice的另一项增强功能–生命周期管理 生命周期管理本质上提供了进入对象所经历的不同生命周期阶段的钩子以引用有关Governor的Wiki文章 Allocation (via Guice)|v
Pre Configuration|v
Configuration|V
Set Resources|V
Post Construction|V
Validation and Warm Up|V-- application runs until termination, then... -- |V
Pre Destroy 为了说明这一点请考虑以下代码 package sample.gov;import com.google.inject.Inject;
import com.netflix.governator.annotations.AutoBindSingleton;
import sample.dao.BlogDao;
import sample.model.BlogEntry;
import sample.service.BlogService;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;AutoBindSingleton(baseClass BlogService.class)
public class DefaultBlogService implements BlogService {private final BlogDao blogDao;Injectpublic DefaultBlogService(BlogDao blogDao) {this.blogDao blogDao;}Overridepublic BlogEntry get(long id) {return this.blogDao.findById(id);}PostConstructpublic void postConstruct() {System.out.println(Post-construct called!!);}PreDestroypublic void preDestroy() {System.out.println(Pre-destroy called!!);}
} 在这里已经使用PostConstruct和PreDestroy批注对两种方法进行了注释以挂钩到此对象的管理者生命周期的这些特定阶段。 整洁的是这些批注不是特定于Governor的而是现在烘焙到JDK中的JSR-250批注。 对该类调用测试将适当地调用带注释的方法这是一个示例测试 mport com.google.inject.Injector;
import com.netflix.governator.guice.LifecycleInjector;
import com.netflix.governator.lifecycle.LifecycleManager;
import org.junit.Test;
import sample.service.BlogService;import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;public class SampleWithGovernatorTest {Testpublic void testExampleBeanInjection() throws Exception {Injector injector LifecycleInjector.builder().withModuleClass(SampleModule.class).usingBasePackages(sample.gov).build().createInjector();LifecycleManager manager injector.getInstance(LifecycleManager.class);manager.start();BlogService blogService injector.getInstance(BlogService.class);assertThat(blogService.get(1l), is(notNullValue()));manager.close();}} 长期以来Spring Framework一直支持类似的机制 -因此基于完全相同的基于JSR-250的注释也适用于Spring bean。 如果您有兴趣进一步探索它 这是我的GitHub项目其中包含带有生命周期管理的示例。 翻译自: https://www.javacodegeeks.com/2015/01/learning-netflix-governator-part-2.htmlnetflix