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

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

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

    Kela's Blog

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

    kela的筆記 應用程序框架 ---- spring(5)

    Posted on 2006-08-23 17:36 Kela 閱讀(298) 評論(0)  編輯  收藏 所屬分類: 我的筆記(Spring)

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

    ?

    ???? Bean 的建立

    ?

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

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

    ?

    如:

    ?

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

    ?

    ???? 屬性注入

    ?

    執行相關的Bean屬性依賴注入

    ???? BeanNameAware setBeanName()

    ?

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

    實現BeanNameAware接口的Bean類,在依賴關系設定完成后,初始化方法之前,將Bean的定義文件中的名稱設定給Bean

    ?

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

    一旦實現了提供的相關接口,則應用程序就會使用到Spring的相關API,而與Spring產生耦合關系。

    ???? BeanFactoryAware setBeanFactory()

    ?

    如果bean類有實現org.springframework.beans.factory.BeanFactoryAware接口,則執行它的setBeanFactory

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

    ???? BeanPostProcessor postProcessBeforeInitialization()

    ?

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

    ???? InitializingBean afterPropertiesSet()

    ?

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

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

    ?

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

    ?

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

    ?

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

    ???? BeanPostProcessor postProcessAfterInitialization()

    ?

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

    ???? DisposableBean destroy()

    ?

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

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

    ?

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

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

    ?

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

    ?

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

    分享到:
    主站蜘蛛池模板: 亚洲国产女人aaa毛片在线| 亚洲区日韩区无码区| 亚洲国产人成在线观看69网站| 水蜜桃视频在线观看免费| 国产乱弄免费视频| 亚洲AV无码一区二区三区电影| 免费无码不卡视频在线观看| 国产成人精品亚洲2020| 啦啦啦中文在线观看电视剧免费版| 亚洲喷奶水中文字幕电影| 免费电视剧在线观看| 亚洲av无码专区在线观看亚| 午夜国产羞羞视频免费网站| 免费一区二区无码视频在线播放| 亚洲日本va午夜中文字幕久久| 成人av片无码免费天天看| 国产成人A人亚洲精品无码| 久久久久国色av免费看| 亚洲国产人成在线观看| 在线播放免费播放av片| 日本特黄特色AAA大片免费| 久久精品国产精品亚洲艾草网美妙| 久久成人永久免费播放| 内射干少妇亚洲69XXX| 一个人免费高清在线观看| 亚洲Av永久无码精品黑人| 超清首页国产亚洲丝袜| 97免费人妻在线视频| 亚洲妇女熟BBW| 亚洲人成人网站在线观看| 国产无遮挡无码视频免费软件| 久久国产亚洲精品无码| 日韩免费观看一级毛片看看| a级在线免费观看| 亚洲无线一二三四区| 国产一区二区三区在线免费| a级毛片高清免费视频| 国产精品高清视亚洲一区二区| 亚洲精品国产电影| 国产成人yy免费视频| 免费人成大片在线观看播放电影 |