作用域
- singleton:Spring Ioc容器中只会存在一个
共享的Bean实例
,无论有多少个Bean引用它,始终指向同一个对象,作用域为Spring中的缺省(同一package
)作用域
- prototype:每次通过Spring容器获取prototype定义的bean时,容器都将创建一个新的Bean实例,每个Bean实例都有自己的属性和状态,而singleton全局只有一个对象
- request:在一次
http请求
中,容器会返回该Bean的同一实例。而对不同的http请求则会产生新的Bean,而且该bean仅在当前http request
内有效 - session:在一次
http session
中,容器会返回该Bean的同一实例。而对不同的session请求则会创建新的实例,该bean实例仅在当前session
内有效 global session
:在一个全局的http session中,容器会返回该bean的同一个实例,仅在使用portlet context时有效
生命周期
一个bean实例被初始化时,需要执行一系列的初始化
操作以达到可用状态
一个bean实例不再被调用时,需要进行相关的析构操作,从bean容器中移除
Spring bean factory
负责管理在spring容器中被创建的bean的生命周期,bean的生命周期由两组回调(call back)方法组成:初始化后调用;销毁前调用
spring框架管理bean的生命周期事件:
- InitializingBean、DisposableBean
- 针对特殊行为的其他aware接口,提供Bean配置文件中的方法custom init()和destroy(),注解@PostConstruct和@PreDestroy