spring是乙個開源框架,其核心是容器(container),在基於spring的應用中,所有應用物件生存與容器中,spring容器負責建立物件、裝配、配置他們,並且管理他們的整個生命週期。
容器會使用di(依賴注入)來管理構成應用的元件——bean,spring容器中bean的生命週期比較複雜,正確理解bean的生命週期很重要,因為bean從建立到銷毀經歷了若干階段,其中每乙個階段都可以針對spring如何管理bean進行個性化定製。下圖展示了bean裝載到spring應用上下文中的乙個典型的生命週期過程。
對bean生命週期中的每個過程的詳解如下:
spring對bean進行例項化。
spring將值和bean的引用注入到bean對應的屬性中。
如果bean實現了beannameaware介面,spring將bean的id傳遞給setbeanname()方法。
如果bean實現了beanfactoryaware介面,spring將呼叫setbeanfactory()方法,將beanfactory容器例項傳入。
如果bean實現了beanpostprocessor介面,spring將呼叫它的postprocessbeforeinitialization()方法。
如果bean實現了initializingbean介面,spring將呼叫它的afterpropertiesset()方法;類似地,如果bean使用init-method宣告了初始化方法,該方法也會被呼叫。
如果bean實現了beanpostprocessor介面,spring將呼叫它們的postprocessafterinitialization()方法。
此時,bean已經準備就緒,可以被應用程式使用了,它們將一直駐留在應用上下文中,知道該應用上下文被銷毀。
如果bean實現了disposablebean介面,spring將呼叫它的destroy()介面方法;同樣,如果bean使用destroy-method宣告了銷毀方法,該方法也會被呼叫。
以上就是bean的生命週期及其詳解。
Java面試之Spring的bean的生命週期
一 bean的定義 spring通常通過配置檔案定義bean。如 xmlns xsi xsi schemalocation spring beans 2.0.xsd helloworld 這個配置檔案就定義了乙個標識為 helloworld 的bean。在乙個配置文件中可以定義多個bean。二 be...
Spring容器對Bean元件的管理
一.bean物件建立時機 預設是隨容器建立,通過lazy init可以改變物件例項化時機 a 預設lazy init default false 當spring容器例項化的時候,並把 容器中物件全部完成例項化 b lazy init true 當從spring容器中獲取物件時候在對物件 例項始化 c...
Spring之Bean的裝配
spring裝配工廠是為了相容以前沒有spring的時候,已經寫好的工廠 裝配set裝配 property 構造裝配 constructor arg 集合裝配 aray list set 但實際上是通用的 bean的裝配可以理解為依賴關係注入bean的裝配方式即bean依賴注入的方式.spring容...