心有多大舞臺便有多大

          Embrace changes, pursue excellence, share niceness.

          Spring的InitializingBean和init-method

          Spring在設(shè)置完一個bean所有的屬性后,會檢查bean是否實(shí)現(xiàn)了InitializingBean接口,如果實(shí)現(xiàn)就調(diào)用bean的afterPropertiesSet方法。另外,如果bean是單例的,則afterPropertiesSet方法只會被調(diào)用一次;否則每次創(chuàng)建bean時afterPropertiesSet方法都會被重新調(diào)用.
          Spring雖然可以通過InitializingBean完成一個bean初始化后對這個bean的回調(diào),但是這種方式要求bean實(shí)現(xiàn) InitializingBean接口。一但bean實(shí)現(xiàn)了InitializingBean接口,那么這個bean的代碼就和Spring耦合到一起了。通常情況下不建議直接實(shí)現(xiàn)InitializingBean,而是用Spring提供的init-method的功能來執(zhí)行一個bean 子定義的初始化方法,這可以在一個bean的配置文件中通過init-method聲明:
          <bean id="testBean" class="TestClass" init-method="initialize"/>
          spring要求這個init-method方法是一個無參數(shù)的方法
          如果一個bean同時實(shí)現(xiàn)了這兩種方式的初始化配置,則spring會先調(diào)用afterPropertiesSet方法,然后通過反射調(diào)用init-method,任何一個方法出錯都會導(dǎo)致spring創(chuàng)建bean失敗.如果afterPropertiesSet方法調(diào)用失敗,也不會再繼續(xù)執(zhí)行init-mehtod方法.

          posted on 2008-04-14 15:36 pony 閱讀(11815) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 宾川县| 子长县| 陵川县| 新营市| 邵阳市| 长阳| 松桃| 阿克陶县| 五大连池市| 栖霞市| 高唐县| 仙居县| 南投市| 周口市| 兴安盟| 拉萨市| 洪洞县| 亚东县| 通榆县| 望谟县| 安义县| 元阳县| 桐乡市| 毕节市| 乌鲁木齐市| 辰溪县| 炉霍县| 综艺| 崇礼县| 汉川市| 镇康县| 深水埗区| 英超| 台南市| 清原| 灵台县| 杂多县| 伊吾县| 华宁县| 息烽县| 福州市|