读书人

Spring治理的Bean的作用域以及生命周期

发布时间: 2012-08-26 16:48:05 作者: rapoo

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>

?

读书人网 >软件架构设计

热点推荐