天天看点

Spring Bean 的生命周期概述

概述

  1. Spring

    启动,扫描指定的包路径,查找需要被

    Spring

    管理的

    bean

  2. 构造

    BeanDefinition

    对象
  3. 实例化

    bean

    ,如果有多个构造方法,则需要推断构造方法,确定好构造方法后,进行实例化得到一个对象
  4. 进行

    bean

    的属性注入
  5. 如果

    bean

    实现了

    BeanNameAware

    接口,

    Spring

    将会

    bean

    id

    传递给

    setBeanName()

    方法
  6. 如果

    bean

    实现了

    BeanFactoryAware

    接口,

    Spring

    将会调用

    setBeanFactory()

    方法,将

    BeanFactory

    容器实例传入
  7. 如果

    bean

    实现了

    ApplicationContextAware

    接口,

    Spring

    将调用

    setApplicationContext()

    方法,将

    bean

    所在的应用上下文引用传入进来
  8. 如果

    bean

    实现了

    BeanPostProcessor

    接口,

    Spring

    将调用

    postProcessBeforeInitialization()

    方法
  9. 执行

    bean

    的初始化构造器方法
    • 如果

      bean

      的方法中有

      @PostConstruct

      注解标注的方法,

      Spring

      将执行这些方法
    • 如果

      bean

      实现了

      InitializingBean

      接口,

      Spring

      将调用

      afterPropertiesSet()

      方法
    • 如果

      bean

      使用

      init-method

      声明了初始化方法,

      Spring

      将调用这个方法
  10. 如果

    bean

    实现了

    BeanPostProcessor

    接口,

    Spring

    会调用

    postProcessAfterInitialization()

    方法
  11. 至此,

    bean

    已经准备就绪,将会放入容器中
  12. Spring

    容器关闭时,执行销毁方法
    • 如果

      bean

      的方法中有

      @PreDestroy

      注解标注的方法,则执行这些方法
    • 如果

      bean

      实现了

      DisposableBean

      中的

      destory()

      方法, 则调用

      destory

      方法