<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Kela's Blog

                前面的路很坎坷,但畢竟是條路.也許走過這一段就會發(fā)現(xiàn),走過去就是夢想中的地方.因此堅持成為此刻唯一能做且必須去做的事情.
    posts - 9, comments - 27, trackbacks - 0, articles - 15

    摘要:Bean的生命周期。一個Bean從建立到銷毀,如果是使用BeanFactory來生成,管理Bean的話,會經(jīng)歷幾個執(zhí)行階段。

    ?

    ???? Bean 的建立

    ?

    BeanFactory讀取Bean定義文件,并生成各個Bean實例。

    Spring中,默認(rèn)取得的實例為Singleton模式,即每一次context.getBean(“beanName”)取得的對象都是同一個,而不是每次都產(chǎn)生一個新的對象。大部分情況下Singleton是能夠滿足要求的,如果考慮到線程安全等的問題,需使用Prototype模式,即每次取得的對象都是一個獨立的對象,只需要將singleton=”false”即可。

    ?

    如:

    ?

    <bean id= "someBean" class= "com.kela.spring.ioc.SomeBean" singleton= "false" >

    ?

    ???? 屬性注入

    ?

    執(zhí)行相關(guān)的Bean屬性依賴注入

    ???? BeanNameAware setBeanName()

    ?

    如果Bean類有實現(xiàn)org.springframework.beans.factory.BeanNameAware接口,則執(zhí)行它的setBaenName()方法。

    實現(xiàn)BeanNameAware接口的Bean類,在依賴關(guān)系設(shè)定完成后,初始化方法之前,將Bean的定義文件中的名稱設(shè)定給Bean。

    ?

    注:Spring中提供了一些Aware相關(guān)接口,實現(xiàn)這些Aware接口的Bean類在被初始化之后,可以取得一些Spring所提供的資源或使用某些功能。

    一旦實現(xiàn)了提供的相關(guān)接口,則應(yīng)用程序就會使用到Spring的相關(guān)API,而與Spring產(chǎn)生耦合關(guān)系。

    ???? BeanFactoryAware setBeanFactory()

    ?

    如果bean類有實現(xiàn)org.springframework.beans.factory.BeanFactoryAware接口,則執(zhí)行它的setBeanFactory。

    實現(xiàn)BeanFactoryAware接口的Bean類,在依賴關(guān)系設(shè)定完成后,初始化方法之前,Spring容器將會注入BeanFactory的實例。

    ???? BeanPostProcessor postProcessBeforeInitialization()

    ?

    如果任何的org.springfaramwork.beans.factory.config.BeanPostProcessor實例與Bean實例關(guān)聯(lián),則執(zhí)行BeanPostProcessors實例的postProcessBeforeInitialization()方法。

    ???? InitializingBean afterPropertiesSet()

    ?

    如果Bean類以實現(xiàn)org.springfaramwork.beans.factory.InitializingBean接口,則執(zhí)行它的afterPropertiesSet()方法。

    ???? Bean 定義文件中定義init-method

    ?

    可以在Bean定義文件使用“init-method”屬性設(shè)定方法名稱,例如:

    ?

    <bean id= "someBean" class= "com.kela.spring.ioc.SomeBean" init-method= "initBean" >

    ?

    如果有以上設(shè)定的話,則進(jìn)行至這個階段時,就會執(zhí)行initBean()方法。

    ???? BeanPostProcessor postProcessAfterInitialization()

    ?

    如果任何的org.springfaramwork.beans.factory.config.BeanPostProcessor實例與Bean實例關(guān)聯(lián),則執(zhí)行BeanPostProcessors實例的postProcessAfterInitialization()方法。

    ???? DisposableBean destroy()

    ?

    在容器關(guān)閉時,如果Bean類有實現(xiàn)org.springframework.beans.factory.DisposableBean接口,則執(zhí)行它的destroy()方法。

    ???? Bean 定義文件中定義destroy-method

    ?

    在容器關(guān)閉時,可以在Bean定義文件中使用“destroy-method”屬性設(shè)定方法名稱,例如:

    <bean id= "someBean" class= "com.kela.spring.ioc.SomeBean" destroy-method= "destroyBean" >

    ?

    如果有以上設(shè)定的話,則進(jìn)行至這個階段時,就會執(zhí)行destroyBean()方法。

    ?

    注意:如果是使用ApplicationContext來生成并管理Bean的話則稍有不同,使用ApplicationContext來生成及管理Bean實例的話,在執(zhí)行BeanFactoryAwaresetBeanFactory()階段之后,若Bean類上有實現(xiàn)org.springframework.context.ApplicationContextAware接口,則執(zhí)行其setApplicationContext()方法,接著才繼續(xù)進(jìn)行BeanPostProcessorpostProcessBeforeInitialization()及之后的流程。

    分享到:
    主站蜘蛛池模板: 欧洲精品免费一区二区三区| 久久夜色精品国产亚洲AV动态图 | 亚洲中文精品久久久久久不卡| 日本无吗免费一二区| 国产精品免费久久| 亚洲人成网站在线观看播放动漫 | 免费国产污网站在线观看不要卡| 亚洲精品无码专区在线在线播放| 亚洲视频在线观看免费视频| 无码天堂va亚洲va在线va| 亚洲AV无码成人专区片在线观看| 国内免费高清在线观看| 中文字幕免费视频精品一| 激情五月亚洲色图| 亚洲欧洲无码AV电影在线观看| 天堂在线免费观看中文版| 最近更新免费中文字幕大全| 国产 亚洲 中文在线 字幕| 日韩精品亚洲aⅴ在线影院| 拨牐拨牐x8免费| 免费无码又爽又刺激高潮视频| 香港经典a毛片免费观看看| 麻豆亚洲AV永久无码精品久久| yy6080亚洲一级理论| 免费看h片的网站| 国产无遮挡又黄又爽免费网站| 亚洲欧洲专线一区| 久久久亚洲欧洲日产国码二区| 亚洲色一色噜一噜噜噜| 成人毛片免费观看视频在线| 无码国产精品一区二区免费式芒果 | 亚洲av无码片在线观看| 亚洲熟妇无码乱子AV电影| 国产成人精品免费视频大全五级| 91免费人成网站在线观看18| 国产一级一毛免费黄片| 无套内射无矿码免费看黄| 亚洲夂夂婷婷色拍WW47| 亚洲精品日韩中文字幕久久久| 亚洲国产一成人久久精品| 免费女人18毛片a级毛片视频|