5.Spring Bean的生命周期

在传统的 Java 应⽤中,bean 的⽣命周期很简单,使⽤ Java 关键字 new 进⾏ Bean 的实例化,然后该 Bean 就能够使⽤了。⼀旦 Bean 不再被使⽤,则由 Java ⾃动进⾏垃圾回收。

相⽐之下,Spring 管理 Bean 的⽣命周期就复杂多了,正确理解 Bean 的⽣命周期⾮常重要,因为 Spring 对 Bean

的管理可扩展性⾮常强,下⾯展示了⼀个 Bean 的构造过程:

 

  1. Spring 启动,查找并加载需要被 Spring 管理的 Bean,进⾏ Bean 的实例化;

  2. Bean 实例化后,对 Bean 的引⼊和值注⼊到 Bean 的属性中;

  3. 如果 Bean 实现了 BeanNameAware 接⼝的话,Spring 将 Bean 的 Id 传递给 setBeanName() ⽅法;

  4. 如果 Bean 实现了 BeanFactoryAware 接⼝的话,Spring 将调⽤ setBeanFactory() ⽅法,将 BeanFactory 容器实例传⼊;

  5. 如果 Bean 实现了 ApplicationContextAware 接⼝的话,Spring 将调⽤ Bean 的 setApplicationContext() ⽅ 法,将 Bean 所在应⽤上下⽂引⽤传⼊进来;

  6. 如果 Bean 实现了 BeanPostProcessor 接⼝,Spring 就将调⽤它们的 postProcessBeforeInitialization() ⽅ 法;

  7. 如果 Bean 实现了 InitializingBean 接⼝,Spring 将调⽤它们的 afterPropertiesSet() ⽅法。类似地,如果 Bean 使⽤ init-method 声明了初始化⽅法,该⽅法也会被调⽤;

  8. 如果 Bean 实现了 BeanPostProcessor 接⼝,Spring 就将调⽤它们的 postProcessAfterInitialization() ⽅ 法;

  9. 此时,Bean 已经准备就绪,可以被应⽤程序使⽤了。它们将⼀直驻留在应⽤上下⽂中,直到应⽤上下⽂被销毁;

  10. 如果 Bean 实现了 DisposableBean 接⼝,Spring 将调⽤它的 destory() 接⼝⽅法,同样,如果 Bean 使⽤了 destory-method 声明销毁⽅法,该⽅法也会被调⽤。

posted @ 2021-08-12 16:23  RainsX  阅读(88)  评论(0)    收藏  举报