SpringBean 的生命周期

bean 创建的过程

  1. 实例化 bean 对象,设置 bean 属性
  2. 如果通过 Aware 接口声明了依赖关系,则会注入 Bean 对容器基础设置层面的依赖,Aware 接口是为了感知到自身的一些属性。容器管理的 bean 一般不需要知道容器的状态和直接使用容器。但是在某些情况下是需要在 bean 中对 IOC 容器进行操作的。这时候需要在 bean 中设置对容器的感知。Spring Ioc 容器也提供了该功能,他是通过特定的 Aware 接口来完成的。

BeanNameAware 接口可以让 bean 知道自己在容器中的名字,可以调用 setBeanName() 方法传入 bean 名字。

BeanFactoryAware 接口可以让 bean 来获取其他 bean,可以调用 setBeanFactory 方法传入 BeanFactory 对象的实例

如果 bean 实现了 BeanClassLoaderAware 接口,可以调用 setBeanClassLoader 方法传入 classLoader 对象实例

  1. 调用 BeanPostProcess 的前置初始化方法 postProcessBeforeInitialization 主要作用是在 Spring 完成实例化后,初始化之前,对实例化的 bean 添加自定义处理逻辑
  2. 如果实现了 InitializingBeanafterPropertiesSet 方法,会做一些属性被设定之后的自定义事情
  3. 调用 bean 自身的 init 方法,做一些初始化相关的工作
  4. 调用 BeanPostProcess 的后置初始化方法 postProcessAfterInitailization 去做一些 bean 初始化之后的自定义工作。
  5. 正常使用 bean。

bean 销毁过程

  1. 如果实现了 DisposableBean 接口,会调用 distory 方法
  2. 如果自定义了 destory-method,则会调用配置的销毁方法。

参考

posted @ 2021-08-20 21:53  egu0o  阅读(69)  评论(0编辑  收藏  举报