Spring IOC中Bean的作 域與 命週期

2021-10-10 18:30:16 字數 2636 閱讀 8868

預設情況下,我們從spring容器中拿到的物件均是"單例"的,對於bean的作⽤域型別如下:

注意: lazy-init是懶載入, 如果等於true時作⽤是指spring容器啟動的時候不會去例項化這個bean,⽽是在程式調⽤時才去例項化. 預設是false即spring容器啟動時例項化.

例項:

// 得到spring容器上下⽂環境

new(

"spring.xml"

);

這個就是spring容器的啟動,如果沒設定lazy-init的話就不會去例項這個bean。

// 得到usercontroller例項化物件

usercontroller usercontroller =

(usercontroller) ac.

getbean

("usercontroller"

);

這個就是得到controller的例項,這個時候就會建立bean的例項。

1)可以提前發現潛在的配置問題

​ 2)bean 物件存在於快取中,使⽤時不⽤再去例項化bean,加快程式運⾏效率

就是作為適合建立bean例的類,⼀般來說對於⽆狀態或狀態不可改變的物件適合使⽤單例模式。(不存在會改變物件狀態的成員變數)比如:user類定義的是各種屬性,但有的時候我們需要的只是user屬性的一小部分,所以user就不適合作為單例,而controller層、service層、dao層裡面的類似固定的操作固定的屬性,不會發生什麼變動,所以適合作為單例。

通過scope=「prototype」 設定bean的型別 ,每次向spring容器請求獲取bean都返回⼀個全新的bean,相對於"singleton"來說就是不快取bean,每次都是⼀個根據bean定義建立的全新bean。

// 得到usercontroller例項化物件

usercontroller usercontroller =

(usercontroller) ac.

getbean

("usercontroller"

);

就是例項的時候,每次拿到的物件都是新建的。

在spring中,bean的⽣命週期包括bean的定義、初始化、使⽤和銷毀4個階段。

在spring中,通常是通過配置⽂檔的⽅式來定義bean的。在⼀個配置⽂檔中,可以定義多個bean。

⽅式⼀:在配置⽂檔中通過指定 init-method 屬性來完成。

public

class

roleservice

}

<

!-- 通過init-method屬性指定⽅法 --

>

"roleservice"

class

="com.***x.service.roleservice" init-

method=

"init"

>

<

/bean>

⽅式⼆: 實現 org.springframework.beans.factory.initializingbean 接⼝。

public

class

roleservice

implements

initializingbean

}

"roleservice"

class

="com.***x.service.roleservice"

>

<

/bean>

⽅式⼀:使⽤ beanfactory

// 得到spring的上下⽂環境

beanfactory factory =

new(

"spring.xml");

roleservice roleservice =

(roleservice) factory.

getbean

("roleservice"

);

// 得到spring的上下⽂環境

new(

"spring.xml");

roleservice roleservice =

(roleservice) ac.

getbean

("roleservice"

);

步驟⼀:實現銷毀⽅式(spring容器會維護bean物件的管理,可以指定bean物件的銷毀所要執⾏的⽅法)

"roleservice"

class

="com.***x.service.roleservice" destroy-

method=

"destroy"

>

<

/bean>

new

("spring.xml");

ctx.

close()

;

配置Spring Ioc中的bean

設值方法注入屬性,可使用元素,也可以使用元素,但是此元素沒有name屬性 list map set 可以指定任意型別 typea type properties與map類似,但是properties集合的關鍵字和值始終是字串。需要使用標記,以多個標記作為子專案,每個標記必須定義乙個key屬性幷包含對...

SpringIOC容器中Bean的生命週期

springioc容器 可以管理bean的生命週期 spring允許在bean生命週期的特定點,執行定製的任務。springioc容器中,bean的生命週期如下 1 通過構造器或工廠方法建立bean例項 呼叫構造器 2 為bean的屬性設定值和對其他bean的引用 呼叫setter 3 將bean例...

spring IOC 容器中 Bean 的生命週期

ioc 容器中 bean 的生命週期 1.通過構造器或工廠方法建立 bean 例項 2.為 bean 的屬性設定值和對其他 bean 的引用 3.呼叫 bean 後置處理器介面 beanpostprocessor 進行初始化前處理 4.呼叫 bean 的初始化方法 5.呼叫 bean 後置處理器介面...