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;
    }
}
  1. BeanPostProcessor 的 postProcessBeforeInitialization(*,*) 方法在所有初始化方法之前执行(这个方法会在Spring所有Bean初始化之前调用
  2. 带有注释 @PostConstruct 初始化方法执行
  3. InitializingBean 的回调接口 afterPropertiesSet() 接口被调用
  4. 自定义配置 init-method="init()" 方法被调用

  Bean 被销毁前调用的方法:

  1. BeanPostProceesor 的 postProcessAfterInitializtion() 方法在所有销毁方法之前被调用(这个方法会在Spring所有Bean销毁之前调用
  2. 带有 注释 @PreDestroy  的销毁方法被执行
  3. DespostionBean 接口  destroy() 回调方法执行
  4. 自定义配置 destroy-method 方法执行

注:Spring 会在Bean 实例化,并且属性注入之后才会执行以上方法。

posted @ 2021-08-06 10:48  Baby~She  阅读(66)  评论(0)    收藏  举报