轉(zhuǎn)帖|其它|編輯:郝浩|2011-05-16 17:24:07.000|閱讀 424 次
概述:在spring中,從BeanFactory或ApplicationContext取得的實(shí)例為Singleton,也就是預(yù)設(shè)為每一個(gè)Bean的別名只能維持一個(gè)實(shí)例,而不是每次都產(chǎn)生一個(gè)新的對(duì)象使用Singleton模式產(chǎn)生單一實(shí)例,對(duì)單線程的程序說(shuō)并不會(huì)有什么問(wèn)題,但對(duì)于多線程的程序,就必須注意安全(Thread-safe)的議題,防止多個(gè)線程同時(shí)存取共享資源所引發(fā)的數(shù)據(jù)不同步問(wèn)題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Spring 中bean 的生命周期短暫?jiǎn)?
在spring中,從BeanFactory或ApplicationContext取得的實(shí)例為Singleton,也就是預(yù)設(shè)為每一個(gè)Bean的別名只能維持一個(gè)實(shí)例,而不是每次都產(chǎn)生一個(gè)新的對(duì)象使用Singleton模式產(chǎn)生單一實(shí)例,對(duì)單線程的程序說(shuō)并不會(huì)有什么問(wèn)題,但對(duì)于多線程的程序,就必須注意安全(Thread-safe)的議題,防止多個(gè)線程同時(shí)存取共享資源所引發(fā)的數(shù)據(jù)不同步問(wèn)題。
然而在spring中 可以設(shè)定每次從BeanFactory或ApplicationContext指定別名并取得Bean時(shí)都產(chǎn)生一個(gè)新的實(shí)例:例如:
在spring中,singleton屬性默認(rèn)是true,只有設(shè)定為false,則每次指定別名取得的Bean時(shí)都會(huì)產(chǎn)生一個(gè)新的實(shí)例
一個(gè)Bean從創(chuàng)建到銷毀,如果是用BeanFactory來(lái)生成,管理Bean的話,會(huì)經(jīng)歷幾個(gè)執(zhí)行階段(如圖1.1):
使用依賴注入,Spring按照Bean定義信息配置Bean所有屬性
3:BeanNameAware的setBeanName():
4:BeanFactoryAware的setBeanFactory():
5:BeanPostProcessors的ProcessBeforeInitialization()
6:initializingBean的afterPropertiesSet():
可以在Bean定義文件中使用"init-method"屬性設(shè)定方法名稱例如:
如果有以上設(shè)置的話,則執(zhí)行到這個(gè)階段,就會(huì)執(zhí)行initBean()方法
8:BeanPostProcessors的ProcessaAfterInitialization()
在容器關(guān)閉時(shí),可以在Bean定義文件中使用"destroy-method"屬性設(shè)定方法名稱,例如:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載