Spring管理的Bean的作用域以及生命周期
一.配置Bean的作用域:
<bean id="..." scope="prototype"/>
?通过配置bean标签中的scope属性来配置Bean的作用域,scope有以下几种取值:
???? ?singleton:单例模式,即通过spring容器取得的所有bean的实例都为同一实例(默认情况下为单例模式)
???? ?prototype:原型模式,即每次通过spring容器取得的bean都是一个新的实例
如果是web应用,则还可以为bean配置以下三种作用域:
????? request:bean作用域为request范围内
????? session:bean作用域为session范围内
????? global session:bean作用域为application范围内
?
二.bean的生命周期
?bean类的初始化:
?1.不配置lazy-init的情况下
????? bean的作用域为singleton,bean类的初始化会在spring容器初始化的时候完成。
????? bean的作用域为prototype,bean类会在通过spring容器获取bean类的时候进行初始化。
?2.配置lazy-init的情况下,上诉两种作用域的bean都会在通过spring容器获取其实例的时候完成初始化。
?
?
?配置bean的延迟初始化:
?1.配置单个bean类的延迟初始化:
<bean id="..." lazy-init="true"/>?
2.配置所有bean类的延迟初始化:
<beans .... default-lazy-init="true"> .... <bean id="..." /> ....</beans>
???在配置了default-lazy-init属性后,如要单独修改某个bean类的延迟初始化,在该bean类中在配置lazy-init属性即可
?
配置bean的初始化方法及销毁方法:
1.配置单个bean类:
<bean id="..." init-method="init" destroy-method="destroy"/>
2.配置所有bean类:
<beans .... default-destroy-method="destroy" default-init-method="init"> .... <bean id="..." /> ....</beans>
?