Spring中Bean的生命周期

参考于:面试官:请你说一下 Bean 的生命周期 - 知乎 (zhihu.com)

  1. 实例化Bean对象
  2. 属性注入
    1. 构造器注入
    2. setter方法注入
    3. 接口注入
  3. 检测Aware接口
    1. BeanNameAware
      1. 如果有实现,则调用setBeanName方法
    2. BeanFactoryAware
      1. 如果有实现,则调用setBeanFactory方法
    3. ApplicationContextAware
      1. 如果有实现,则调用setApplicationContext方法
  4. 检测BeanPostProcessor接口
    1. 如果有实现,则调用postProcessBeforeInitialization()方法
  5. 检测InitializingBean接口
    1. 如果有实现,则调用afterPropertiesSet()方法
    2. 如果Bean有使用init-method声明初始化方法,就调用该初始化方法
  6. 检测BeanPostProcessor接口
    1. 如果有实现,则调用postProcessAfterInitialization()方法
  7. 初始化完成,可以被使用
  8. 检测DisposableBean接口
    1. 如果有实现,则调用destory()方法
    2. 如果Bean有使用destory-method声明销毁方法,就调用该销毁方法