天天看點

spring三種執行個體化Bean的方式和管理Bean的作用域和Bean的生命周期

Spring執行個體化Bean的三種方式分别是:

1,xml配置使用bean的類構造器

<bean id="personService" class="cn.service.impl.PersonServiceBean"></bean>

2,xml配置+factory類,使用靜态工廠方法執行個體化

<bean id="personService2" class="cn.service.impl.PersonServiceBeanFactory"  factory-method="createPersonServiceBean"/>

3,xml配置+factory類,使用執行個體工廠方法執行個體化

<bean id="personServiceFactory" class="cn.service.impl.PersonServiceBeanFactory"/>

<bean id="personService3" factory-bean="personServiceFactory" factory-method="createPersonServiceBean2"/>

三種Spring執行個體化Bean方法的用處,

第一種方法,通過bean的預設構造函數建立,當各個bean的業務邏輯互相比較獨立的時候或者和外界關聯較少的時候可以使用。

第二種方法,利用靜态factory方法建立,可以統一管理各個bean的建立,如各個bean在建立之前需要相同的初始化處理,則可用這個factory方法險進行統一的處理等等。

第三種方法,利用執行個體化factory方法建立,即将factory方法也作為了業務bean來控制。

Bean的作用域:

1,預設:singleton(單例,每次getBean()都是相同的Bean)

<bean id="bean1" class="cn.transaction.Bean1"></bean>

2,prototype:(每次getBean()都會獲得新的Bean)

<bean id="bean1" class="cn.transaction.Bean1" scope="prototype"></bean>

Bean的生命周期:

1,預設:singleton 在容器執行個體化的時候就會執行個體化;

1.1,更該執行個體化時間:

<bean id="bean1" class="cn.transaction.Bean1" lazy-init="true"></bean>

如果要為所有的Bean延遲初始化:

在beans中配置該屬性

1.2,配置初始化方法:

<bean id="bean1" class="cn.transaction.Bean1" lazy-init="true" init-method="init"></bean>

1.3,配置銷毀方法

<bean id="bean1" class="cn.transaction.Bean1" lazy-init="true" init-method="init" destroy-method="destroy"></bean>

1.4,bean在什麼時候被銷毀

預設既然是在spring容器初始化時建立Bean,是以是Bean是在spring容器關閉的時候銷毀。

2,prototype:在調用getBean()的時候進行執行個體化;