Spring Bean的生命週期中各方法的執行順

Spring Bean的生命週期中各方法的執行順

原文引自JSON_NULL

Spring 容器中的 Bean 是有生命週期的,Spring 允許在 Bean 在初始化完成後以及 Bean 銷燬前執行特定的操作,常用的設定方式有以下十種:

  1. 通過實現 InitializingBean 接口來定製初始化之後的操作方法;
  2. 通過實現DisposableBean 接口來定製銷燬之前的操作方法;
  3. 通過元素的 init-method屬性指定初始化之後調用的操作方法;
  4. 通過元素的 destroy-method屬性指定銷燬之前調用的操作方法;
  5. 在指定方法上加上 @PostConstruct 註解來制定該方法是在初始化之後調用;
  6. 在指定方法上加上 @PreDestroy 註解來制定該方法是在銷燬之前調用;
  7. 實現BeanNameAware接口設置Bean的ID或者Name;
  8. 實現BeanFactoryAware接口設置BeanFactory;
  9. 實現ApplicationContextAware接口設置ApplicationContext;
  10. 註冊實現了BeanPostProcessor的Bean後處理器,通過postProcessBeforeInitialization和postProcessAfterInitialization 方法對初始化的Bean進行自定義處理;

初始化過程中各方法的執行順序如下:

  1. 調用構造器 Bean.constructor,進行實例化;
  2. 調用 Setter 方法,設置屬性值;
  3. 調用 BeanNameAware.setBeanName,設置Bean的ID或者Name;
  4. 調用 BeanFactoryAware.setBeanFactory,設置BeanFactory;
  5. 調用 ApplicationContextAware.setApplicationContext,置ApplicationContext;
  6. 調用BeanPostProcessor的預先初始化方法,如下:
    • BeanPostProcessor1.postProcessBeforeInitialization
    • BeanPostProcessor2.postProcessBeforeInitialization
    • BeanPostProcessor3.postProcessBeforeInitialization
  7. 調用由 @PostConstruct 註解的方法;
  8. 調用 InitializingBean.afterPropertiesSet;
  9. 調用 Bean.init-mehod 初始化方法;
  10. 調用BeanPostProcessor的後初始化方法,如下:
    1. BeanPostProcessor1.postProcessAfterInitialization
    2. BeanPostProcessor2.postProcessAfterInitialization
    3. BeanPostProcessor3.postProcessAfterInitialization

容器關閉時,Bean銷燬過程中各方法的執行順序如下:

  1. 調用由 @PreDestroy 註解的方法
  2. 調用DisposableBean的destroy();
  3. 調用定製的destroy-method方法;

SpringBean容器聲明週期

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章