首先簡單說一下(以下為乙個回答的參考模板)
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屬性,會自動呼叫其配置的銷毀方法。
結合**理解一下
spring通常通過配置檔案定義bean。如:
這個配置檔案就定義了乙個標識為 helloworld 的bean。在乙個配置文件中可以定義多個bean。
有兩種方式初始化bean。
1、在配置文件中通過指定init-method 屬性來完成
在bean的類中實現乙個初始化bean屬性的方法,如init(),如:
然後,在配置檔案中設定init-mothod屬性:public
class
helloworld
…… }
2、實現 org.springframwork.beans.factory.initializingbean介面
bean實現initializingbean介面,並且增加 afterpropertiesset() 方法:
那麼,當這個bean的所有屬性被spring的beanfactory設定完後,會自動呼叫afterpropertiesset()方法對bean進行初始化,於是,配置檔案就不用指定 init-method屬性了。public
class
helloworld implement initializingbean
…… }
有三種方式可以得到bean並進行呼叫:
2、使用beanfactoryhelloworld hw=
newhelloworld()
;new
(hw)
;bw.
setpropertyvalue
(」msg」,」helloworld」)
;system.out.
println
(bw.
getpropertycalue
(」msg」)
);
newinputstream is=
newfileinputstream
(」config.xml」)
;xmlbeanfactory factory=
newxmlbeanfactory
(is)
;helloworld hw=
(helloworld) factory.
getbean
(」helloworld」)
;system.out.
println
(hw.
getmsg()
);
(」config.xml」)
;helloworld hw=
(helloworld) actx.
getbean
(」helloworld」)
;system.out.
println
(hw.
getmsg()
);1、使用配置檔案中的 destory-method 屬性
與初始化屬性 init-methods類似,在bean的類中實現乙個撤銷bean的方法,然後在配置檔案中通過 destory-method指定,那麼當bean銷毀時,spring將自動呼叫指定的銷毀方法。
2、實現 org.springframwork.bean.factory.disposeblebean介面
如果實現了disposeblebean介面,那麼spring將自動呼叫bean中的destory方法進行銷毀,所以,bean中必須提供destory方法。
你能說說你理解的資料庫規範嗎?
1 首先是工具,我們用的是 mysql資料庫,工具是workbench,這個工具是專門為mysql設計的資料庫建模工具,你可以用它進行設計和建立新的資料庫圖示,在windows上面我們大多用的是powerdesiger,在mac上用workbench目前來看還是挺好用的,無論是建立資料庫文件,er圖...
能說說Spring中都使用了哪些設計模式嗎?
spring ioc核心的設計模式的思想,就是工廠模式。spring本身就是乙個工廠,把所有的bean例項都給放在了spring容器裡 大工廠 如果你要使用bean,就找spring容器就可以了,你自己不用建立物件了 將物件的建立過程放在乙個factory工廠類裡,如果要使用的話,則通過該工廠類來直...
面試官 你能說說mysql的幾種日誌檔案嗎?
mysql底層是有三種日誌檔案 undo redo binlog,這裡我們是以innodb儲存引擎為例的,為什麼要牽扯去儲存引擎呢,因為undo redo是屬於innodb儲存引擎的,binlog才是屬於mysql server的日誌檔案 這裡我們通過sql語句 update student nam...