Bean的生命周期

    一个Bean从建立到销毁,会经历几个阶段,如果使用BeanFactory或ApplicationContext来生成、管理Bean,会尽量支持以下的生命周期:
    1、Bean的建立
       由BeanFactory读取Bean定义文件,并生成Bean的实例。
    2、属性注入
       执行相关的Bean配置依赖注入。
    3、BeanNameAware的setBeanName()
       如果Bean实现了org.springframework.beans.factory.BeanNameAware接口,则执行它的setBeanName()方法。
    4、BeanFactoryAware的setBeanFactory()
       如果Bean实现了org.springframework.beans.factory.BeanFactoryAware接口,则执行它的setBeanFactory()方法。
    5、ApplicationContextAware的setApplicationContext()
       如果Bean是由ApplicationContext生成的,且实现了org.springframework.context.ApplicationContextAware接口,则执行它的setApplicationContext()方法。
    6、BeanPostProcessors的postProcessBeforeInitialization()
       如果Bean定义文件中有定义任何实现了org.springframework.beans.factory.config.BeanPostProcessors接口的实例,在执行BeanPostProcessors实例的postProcessBeforeInitialization()方法。
    7、InitializingBean的afterPropertiesSet()
       如果Bean实现了org.springframework.beans.factory.IntializingBean,则执行它的afterPropertiesSet()方法。
    8、Bean定义文件中定义init-method
       如果Bean定义中使用了init-method属性,例如:
xml 代码
 
  1. <bean id="hello" class="com.savage.HelloBean" init-method="init"/>  

       那么会在这个阶段执行init()方法。
    9、BeanPostProcessors的postProcessAfterInitialization()
         如果Bean定义文件中有定义任何实现了 org.springframework.beans.factory.config.BeanPostProcessors接口的实例,在执行 BeanPostProcessors实例的postProcessAfterInitialization()方法。
    10、DisposableBean的destroy()
       在容器关闭时,如果Bean类有实现org.springframework.beans.factory.DisposableBean接口,则执行它的destroy()方法。
    11、Bean定义文件中定义destroy-method
       在容器关闭时,如果Bean定义中有destroy-method属性,例如:

      
xml 代码
 
  1. <bean id="hello" class="com.savage.HelloBean" destroy-method="destroy"/>  
      
       那么会在这个阶段执行destroy()方法。

你可能感兴趣的:(Spring学习笔记)