從書上可知,spring框架中bean物件有它的生命週期,還包括bean的銷毀。在beanfacotory中獲取的例項是singleton,beanfactory預設每乙個引用來維護乙個例項,對單執行程式來講,並不會有什麼問題,但是多程式來說,就需要你注意執行的安全,可以設定每次在beanfacotry中獲取bean時,都產生乙個新的例項。
for example:
singleton預設值是true,意思是,每次都是共享乙個例項,但是如果你要換成了false,每次都會產生乙個新的例項。
從上一小結也曾經說過,beanfactory負責bean的生命週期,包括bean的建立與銷毀,bean的建立方式是否為singleton,
bean的屬性設定,依賴關係的關聯等。還可以在bean的生命週期的某個階段做一些事情,可以有幾種方式。
第一種:通過spring框架中提供的org.springframework.beans.factory.initializingbean,和org.springframework
.beans.factory.disposablebean,在建立或銷毀的時候做一些事情。(書上描述說這種方式會導致bean的可以移植性)
第二種:在建立hellobean同時建立兩個方法,用來當建立該bean或銷毀該bean物件時候做某些事情.**如下:
public class hellobean
....
public void destroy()
}
這樣做的好處就是不用引入spring框架中的類,就可以讓bean物件輕鬆的從spring框架中解脫出來。
然而這種方法還是依賴於spring的容器,容器必須要有呼叫這個方法的能力。知識一些方法的名可以由自己去決定。
除了兩種方式之外,其實還可以在bean物件建立的setter方法中做一些事情,可以讓bean不依賴容器或特定的類.但是銷毀時的呼叫就很麻煩,因為finalize()執行的時間是由gc決定。
Spring框架 Bean的種類
1 普通bean spring直接建立a例項,並返回。2 factorybean 是乙個特殊的bean,具有工廠生成物件能力,只能生成特定的物件。bean必須使用factorybean介面,此介面提供方法getobject 用於獲得特定bean。先建立fb例項,呼叫getobject 方法,並返回方...
Spring框架中Bean的生命週期
spring ioc容器找到關於bean的定義並例項化該bean。spring ioc容器對bean進行依賴注入。如果bean實現了beannameaware介面,則將該bean的id傳給setbeanname方法。如果bean實現了beanfactoryaware介面,則將beanfactory物...
Spring框架中bean的生命週期
1 spring容器從xml檔案中讀取bean的定義,並例項化bean。2 spring根據bean的定義填充所有的屬性。3 如果bean實現了beannameaware介面,spring傳遞bean的id到setbeanname方法。4 如果bean實現了beanfactoryaware介面,sp...