Spring 生命周期方法 和 BeanPostProcessor 接口
1 public class Father implements InitializingBean, DisposableBean {
2 @PostConstruct 3 public void postConstruct(){ 4 System.out.println("PostConstruct is invoke !"); 5 } 6 @PreDestroy 7 public void preDestroy(){ 8 System.out.println("PreDestroy is invoke"); 9 } 10 @Override 11 public void destroy() throws Exception { 12 System.out.println("DisposableBean is invoke"); 13 } 14 @Override 15 public void afterPropertiesSet() throws Exception { 16 System.out.println("InitializingBean is invoke"); 17 } 18 public void init(){ 19 System.out.println("init is invoke"); 20 } 21 public void mydestroy(){ 22 System.out.println("mydestroy is invoke"); 23 } 24 }
public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessBeforeInitialization is invoked"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessBeforeInitialization is invoked"); return bean; } }
- BeanPostProcessor 的 postProcessBeforeInitialization(*,*) 方法在所有初始化方法之前执行(这个方法会在Spring所有Bean初始化之前调用)
- 带有注释 @PostConstruct 初始化方法执行
- InitializingBean 的回调接口 afterPropertiesSet() 接口被调用
- 自定义配置 init-method="init()" 方法被调用
Bean 被销毁前调用的方法:
- BeanPostProceesor 的 postProcessAfterInitializtion() 方法在所有销毁方法之前被调用(这个方法会在Spring所有Bean销毁之前调用)
- 带有 注释 @PreDestroy 的销毁方法被执行
- DespostionBean 接口 destroy() 回调方法执行
- 自定义配置 destroy-method 方法执行
注:Spring 会在Bean 实例化,并且属性注入之后才会执行以上方法。

浙公网安备 33010602011771号