7.9 容器中Bean的生命周期

7.9 容器中Bean的生命周期

Spring可以管理singleton作用域的Bean的生命周期

Spring可以管理singleton作用域的Bean的生命周期, Spring可以精确地知道该Bean何时被创建何时被初始化完成、容器何时准备销毁Bean实例。

Spring无法管理prototype作用域的Bean

对于prototype作用域的Bean, Spring容器仅仅负责创建,当容器创建了Bean实例之后,Bean实例完全交给客户端代码管理,容器不再跟踪其生命周期。每次客户端请求prototype作用域的Bean时,Spring都会产生一个新的实例, Spring容器无从知道它曾经创建了多少个prototype作用域的Bean,也无从知道这些prototype作用域的Bean什么时候才会被销毁。因此, **Spring无法管理prototype作用域的Bean**。
对于singleton作用域的Bean,每次客户端代码请求时都返回同一个共享实例,客户端代码不能控制Bean的销毁, Spring容器负责跟踪Bean实例的产生、销毁。 Spring容器可以在创建Bean之后,进行某些通用资源申请:还可以在销毁Bean实例之前,先回收某些资源,比如数据库连接。

管理Bean生命周期行为的时机

对于singleton作用域的Bean, Spring容器知道Bean何时实例化结束、何时销毁, Spring可以管理实例化结束之后销毁之前的行为。管理Bean的生命周期行为主要有如下两个时机。

  1. 注入依赖关系之后。
  2. 即将销毁Bean之前