心有多大舞臺(tái)便有多大

          Embrace changes, pursue excellence, share niceness.

          Spring的InitializingBean和init-method

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

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

          主站蜘蛛池模板: 肥西县| 尤溪县| 克什克腾旗| 犍为县| 蓬莱市| 乡宁县| 寿光市| 永川市| 垦利县| 阳朔县| 多伦县| 樟树市| 绩溪县| 文成县| 长治县| 抚顺县| 石狮市| 莫力| 惠水县| 类乌齐县| 宁城县| 临夏县| 吴川市| 日照市| 尉犁县| 抚州市| 娱乐| 鄯善县| 济源市| 曲沃县| 微山县| 巍山| 永州市| 华宁县| 北安市| 瑞昌市| 张家界市| 交口县| 长春市| 大宁县| 通化县|