找工作的時候有些人會被問道spring中bean的生命週期,其實也就是考察一下對spring是否熟悉,工作中很少用到其中的內容,那我們簡單看一下。
在說明前可以思考一下servlet的生命週期:例項化,初始init,接收請求service,銷毀destroy;
spring上下文中的bean也類似,如下
1、例項化乙個bean--也就是我們常說的new;
2、按照spring上下文對例項化的bean進行配置--也就是ioc注入;
3、如果這個bean已經實現了beannameaware介面,會呼叫它實現的setbeanname(string)方法,此處傳遞的就是spring配置檔案中bean的id值
4、如果這個bean已經實現了beanfactoryaware介面,會呼叫它實現的setbeanfactory(setbeanfactory(beanfactory)傳遞的是spring工廠自身(可以用這個方式來獲取其它bean,只需在spring配置檔案中配置乙個普通的bean就可以);
6、如果這個bean關聯了beanpostprocessor介面,將會呼叫postprocessbeforeinitialization(object obj, string s)方法,beanpostprocessor經常被用作是bean內容的更改,並且由於這個是在bean初始化結束時呼叫那個的方法,也可以被應用於記憶體或快取技術;
7、如果bean在spring配置檔案中配置了init-method屬性會自動呼叫其配置的初始化方法。
8、如果這個bean關聯了beanpostprocessor介面,將會呼叫postprocessafterinitialization(object obj, string s)方法、;
注:以上工作完成以後就可以應用這個bean了,那這個bean是乙個singleton的,所以一般情況下我們呼叫同乙個id的bean會是在內容位址相同的例項,當然在spring配置檔案中也可以配置非singleton,這裡我們不做贅述。
9、當bean不再需要時,會經過清理階段,如果bean實現了disposablebean這個介面,會呼叫那個其實現的destroy()方法;
10、最後,如果這個bean的spring配置中配置了destroy-method屬性,會自動呼叫其配置的銷毀方法。
以上10步驟可以作為面試或者筆試的模板,另外我們這裡描述的是應用spring上下文bean的生命週期,如果應用spring的工廠也就是beanfactory的話去掉第5步就ok了。
Java面試之Spring的bean的生命週期
一 bean的定義 spring通常通過配置檔案定義bean。如 xmlns xsi xsi schemalocation spring beans 2.0.xsd helloworld 這個配置檔案就定義了乙個標識為 helloworld 的bean。在乙個配置文件中可以定義多個bean。二 be...
Spring之Bean的裝配
spring裝配工廠是為了相容以前沒有spring的時候,已經寫好的工廠 裝配set裝配 property 構造裝配 constructor arg 集合裝配 aray list set 但實際上是通用的 bean的裝配可以理解為依賴關係注入bean的裝配方式即bean依賴注入的方式.spring容...
Spring入門之bean的屬性
可以在bean中配置scope屬性,例如 lazy init false bean 在預設情況下,spring建立bean是單例模式 scope預設是singleton singleton 單例 屬性是共享的 一般情況下,把資料存放到方法中的變數中 prototype 多例 當乙個bean是多例模式...