通俗易懂的spring bean的生命周期

  Spring中Bean的生命周期是一个困扰了我好久的问题,在网上找的各类五花八门的答案看的我是眼花缭乱,一头雾水,外加一大堆看不懂的代码更是搞的我云里雾里,在通过了长久的概括总结思考,终于理清了这其中的逻辑。spring

  Spring Bean的生命周期其实能够围绕如下一段配置文件展开:框架

1 <bean id="student" class="com.wx.test.entity.Student">
2         <property name="name" value="小明"/>  
3         <property name="age" value="12"/> 
4 </bean>

  以上是一段很简单的代码,用来建立bean并注入相关属性(姓名、年龄),这就是bean的生命周期的起始。固然这只是简单的表现,Bean的生命周期实际上比这复杂,由于这其中涉及到不少接口须要去实现,这些接口咱们不多会关心,我总结出的bean的生命周期大体能够分为如下几个步骤: post

  ① Spring IoC容器找到关于Bean的定义并实例化该Bean。 
  ② Spring IoC容器对Bean进行依赖注入。 
  ③ 若是Bean实现了BeanNameAware接口,则将该Bean的id传给setBeanName方法。 
  ④ 若是Bean实现了BeanFactoryAware接口,则将BeanFactory对象传给setBeanFactory方法。 
  ⑤ 若是Bean实现了BeanPostProcessor接口,则调用其postProcessBeforeInitialization方法。 
  ⑥ 若是Bean实现了InitializingBean接口,则调用其afterPropertySet方法。 
  ⑦ 若是有和Bean关联的BeanPostProcessors对象,则这些对象的postProcessAfterInitialization方法被调用。 
  ⑧ 当一个bean再也不被调用时将从bean容器中移除。
  ⑨ 当销毁Bean实例时,若是Bean实现了DisposableBean接口,则调用其destroy方法。

  若是你以为以上还有有些复杂,那么你能够大概这样理解:spa

  spring Bean的生命周期简单易懂,首先初始化bean实例,其次spring ioc容器对bean进行依赖注入,而后实现一系列spring bean的接口,最后当一个bean再也不被调用时将从bean容器中移除,若是bean实现了DisposableBean接口,则调用其destory方法。

 

  最后补充一些内容,看不明白能够不看:code

  

Spring bean factory 负责管理在 spring 容器中被建立的 bean 的生命周期。Bean 的生命周期由两组回调(call back)方法组成。
    - 初始化以后调用的回调方法。
    - 销毁以前调用的回调方法。

Spring 框架提供了如下四种方式来管理 bean 的生命周期事件:

- InitializingBean 和 DisposableBean 回调接口
- 针对特殊行为的其余 Aware 接口
- Bean 配置文件中的 Custom init() 方法和 destroy() 方法
- @PostConstruct 和 @PreDestroy 注解方式
相关文章
相关标签/搜索