Spring Bean的生命周期

时间:2021-04-23 19:06:06

前言

   在Spring中,从Spring IOC容器中取得的bean实例为单例,这个bean的生命周期就是容器管理的,一般担当管理者角色的是BeanFactory或者ApplicationContext。认识Bean的生命周期活动,对于更好的理解它有很大的帮助。

下面以BeanFactory为例,说明一个bean的生命周期

  Spring Bean的生命周期

  • 1. Bean的建立

            容器寻找Bean的定义信息并将其实例化

  • 2.属性注入

           使用依赖注入,Spring按照Bean定义信息配置Bean所有属性

  • 3.BeanNameAware的setBeanName()

    如果Bean类实现BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的id。

  • 4.BeanFactoryAware的setBeanFactory()

           如果Bean类实现BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身

  • 5.BeanPostProcessor的postProcessBeforeIntialization()

   如果bean和BeanPostProcessor关联,那么其postProcessBeforeIntialization()方法将被调用

  • 6.InitializingBean的afterPropertiesSet()

    如果Bean类已实现InitializingBean接口,则执行他的afterProPertiesSet()方法

  • 7.Bean定义文件中定义init-method

    可以在Bean定义文件中使用"init-method"属性设定方法名称

<bean id="demoBean" class="com.yangsq.bean.DemoBean" init-method="initMethod">
  .......
 </bean>

  • 8.BeanPostProcessor的postProcessAfterInitialization()

          如果有任何的BeanPostProcessors实例与Bean实例关联,则执行BeanPostProcessors实例的ProcessaAfterInitialization()方法

  • 9.  此时,Bean已经可以被应用系统使用了

 

  • 10. DisposableBean的destroy()

          在容器关闭时,如果Bean类实现了org.springframework.beans.factory.DisposableBean接口,则执行它的destroy()方法。

  • 11 Bean定义文件中定义destroy-method

            在容器关闭时,可以在Bean定义文件中使用“destory-method”定义的方法

          < bean id="demoBean" class="com.yangsq.bean.DemoBean" destory-method="destroyMethod">
             .......
          </bean>