Bean的生命周期

892 阅读1分钟

image.png

Bean的生命周期

  1. Spring启动,查找并加载需要被Spring管理的bean, 实例化,创建一个bean对象。
  2. 填充属性,为Bean的属性赋值。
  3. 初始化(如果实现了×××Aware接口,通过不同类型的Aware接口拿到SPring容器中的资源;如果实现了BeanPostProcessor接口,则会回调该接口的postProcessBeforeInitialzation和postProcessAfterInitialization方法;init-method方法,则会执行init-method配置的方法,也就是将调用他们的afterPropertiesSet()方法。类似的,如果bean使用init-method声明了初始化方法,该方法也会被调用。)
  4. Bean已经准备就绪,可以被应用程序使用了。他们将一直驻留在应用上下文中,直到应用上下文被销毁。
  5. 销毁阶段(容器关闭后,如果Bean实现了DisposableBean接口,则会回调改接口的destroy方法)

初始化流程方法

image.png

销毁方法

在BeanFactory 关闭的时候,Bean的生命周期会调用如下方法:

  1. DestructionAwareBeanPostProcessor.postProcessBeforeDestruction(): 在销毁之前将此BeanPostProcessor 应用于给定的bean实例。能够调用自定义回调,像是DisposableBean 的销毁和自定义销毁方法,这个回调仅仅适用于工厂中的单例bean(包括内部bean)
  2. 实现了自定义的destory()方法