spring bean 生命周期事件
2019-05-29 00:07
1326 查看
整体流程图
程序示例
maven依赖
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
配置类
@Configuration @ComponentScan("per.ym.processor, per.ym.service") public class LifeCycleConfig { @Bean(initMethod = "init", destroyMethod = "destroy") public LifeCycleBean lifeCycleBean() { return new LifeCycleBean(); } }
实例bean
public class LifeCycleBean implements InitializingBean, BeanNameAware, BeanFactoryAware, BeanClassLoaderAware { public LifeCycleBean() { System.out.println("consturctor......"); } public void init() { System.out.println("init......"); } @Autowired public void setService(PersonService service) { System.out.println("setService......"); } public void destroy() { System.out.println("destroy......"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("afterPropertiesSet......"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println("setBeanFactory......"); } @Override public void setBeanName(String name) { System.out.println("setBeanName......"); } @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("setBeanClassLoader......"); } }
InstantiationAwareBeanPostProcessor
package per.ym.processor; @Component public class MyInstantiationBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter { @Override public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) { System.out.println("postProcessBeforeInstantiation......"); } return null; } @Override public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) { System.out.println("postProcessAfterInstantiation......"); } return true; } @Override public PropertyValues postProcessPropertyValues( PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) { System.out.println("postProcessPropertyValues......"); } return pvs; } }
BeanPostProcessor
package per.ym.processor; @Component public class MyPostProcess implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) { System.out.println("postProcessBeforeInitialization......"); } return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("lifeCycleBean")) { System.out.println("postProcessAfterInitialization......"); } return bean; } }
service
package per.ym.service; @Service public class Service { }
测试类
public class Test_Normal { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(LifeCycleConfig.class); @Test public void test() { applicationContext.getBean("lifeCycleBean"); applicationContext.close(); } }
测试结果:
postProcessBeforeInstantiation...... consturctor...... postProcessAfterInstantiation...... postProcessPropertyValues...... setService...... setBeanName...... setBeanClassLoader...... setBeanFactory...... postProcessBeforeInitialization...... afterPropertiesSet...... init...... postProcessAfterInitialization...... destroy......
相关文章推荐
- 测试spring bean的生命周期
- Spring Bean的生命周期
- ASP.NET最常用的页面生命周期事件
- Android 集中处理Activity的生命周期事件: Application.ActivityLifecycleCallbacks
- 页面生命周期阶段以及相关事件
- 页面生命周期阶段以及相关事件
- Spring Bean 生命周期
- [AngularJS面面观] 9. scope事件机制 - 基本概念以及生命周期
- Java垃圾回收精粹——权衡点、对象生命周期以及全局暂停事件
- Spring Bean的生命周期
- ionic angular 生命周期事件
- 连载《一个程序猿的生命周期》-《发展篇》- 21.“中兴事件”反应出的价值偏差
- spring Bean的生命周期管理
- spring bean的生命周期
- Spring bean 的生命周期
- ASP.NET的生命周期与事件处理
- Spring Bean的生命周期(freestyle)
- ASP.NET AJAX 客户端生命周期事件
- Spring bean的生命周期
- Spring Bean的生命周期