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
的生命周期行为主要有如下两个时机。
- 注入依赖关系之后。
- 即将销毁
Bean
之前