Spring 的InitializingBean接口

InitializingBean接口為bean提供了初始化方法的方式惦辛,它只包括afterPropertiesSet方法,凡是繼承該接口的類(lèi)条舔,在初始化bean的時(shí)候會(huì)執(zhí)行該方法叙赚。

測(cè)試程序如下:

/**
 * @author jy
 * @date 2018年5月15日
 * <p>Description: </p> 
 */
package com.dubbo.service.impl;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

/**
 * 
 *
 */
@Component("testBean")
public class TestInitializeBean implements InitializingBean{

    /* (non-Javadoc)
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
     */
    @Override
    public void afterPropertiesSet() throws Exception {

        System.out.println("initialize bean");
    }

}

main程序如下
/**
 * @author 
 * @date 2018年5月4日
 * <p>Description: </p> 
 */
package dubboprovider;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.dubbo.service.impl.UserServiceImpl;

/**
 * @author 
 *
 */
public class ApplicationTest {

    /**
     * @param args
     *<p>Description: </p>  
     */
    public static void main(String[] args) {

        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        context.start();
//      UserServiceImpl userServiceImpl=(UserServiceImpl) context.getBean("userService");
//      String n=userServiceImpl.getName("10");
        synchronized (ApplicationTest.class) {
            while(true){
                try {
                    ApplicationTest.class.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            
        }
            
        }
    }

}

運(yùn)行main程序結(jié)果


image.png

這說(shuō)明在spring初始化bean的時(shí)候,如果bean實(shí)現(xiàn)了InitializingBean接口拭荤,會(huì)自動(dòng)調(diào)用afterPropertiesSet方法茵臭。

實(shí)現(xiàn)InitializingBean接口與在配置文件中指定init-method有什么不同?

修改配置文件舅世,加上init-method配置旦委,修改如下:

<bean id="testBean"
class="com.dubbo.service.impl.TestInitializeBean" init-method="testInitial">
</bean>
運(yùn)行main程序,結(jié)果


image.png

由結(jié)果可看出雏亚,在spring初始化bean的時(shí)候缨硝,如果該bean是實(shí)現(xiàn)了InitializingBean接口,并且同時(shí)在配置文件中指定了init-method罢低,系統(tǒng)則是先調(diào)用afterPropertiesSet方法查辩,然后在調(diào)用init-method中指定的方法。
總結(jié)

1:spring為bean提供了兩種初始化bean的方式奕短,實(shí)現(xiàn)InitializingBean接口宜肉,實(shí)現(xiàn)afterPropertiesSet方法,或者在配置文件中同過(guò)init-method指定翎碑,兩種方式可以同時(shí)使用

2:實(shí)現(xiàn)InitializingBean接口是直接調(diào)用afterPropertiesSet方法谬返,比通過(guò)反射調(diào)用init-method指定的方法效率相對(duì)來(lái)說(shuō)要高點(diǎn)。但是init-method方式消除了對(duì)spring的依賴(lài)

3:如果調(diào)用afterPropertiesSet方法時(shí)出錯(cuò)日杈,則不調(diào)用init-method指定的方法遣铝。總結(jié)

1:spring為bean提供了兩種初始化bean的方式莉擒,實(shí)現(xiàn)InitializingBean接口酿炸,實(shí)現(xiàn)afterPropertiesSet方法,或者在配置文件中同過(guò)init-method指定涨冀,兩種方式可以同時(shí)使用

2:實(shí)現(xiàn)InitializingBean接口是直接調(diào)用afterPropertiesSet方法填硕,比通過(guò)反射調(diào)用init-method指定的方法效率相對(duì)來(lái)說(shuō)要高點(diǎn)。但是init-method方式消除了對(duì)spring的依賴(lài)

3:如果調(diào)用afterPropertiesSet方法時(shí)出錯(cuò),則不調(diào)用init-method指定的方法扁眯。

Map<K, V> CACHES = new ConcurrentHashMap<K, V>();還有這個(gè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壮莹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子姻檀,更是在濱河造成了極大的恐慌命满,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绣版,死亡現(xiàn)場(chǎng)離奇詭異胶台,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)杂抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)诈唬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人默怨,你說(shuō)我怎么就攤上這事讯榕。” “怎么了匙睹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)济竹。 經(jīng)常有香客問(wèn)我痕檬,道長(zhǎng),這世上最難降的妖魔是什么送浊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任梦谜,我火速辦了婚禮,結(jié)果婚禮上袭景,老公的妹妹穿的比我還像新娘唁桩。我一直安慰自己,他們只是感情好耸棒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布荒澡。 她就那樣靜靜地躺著,像睡著了一般与殃。 火紅的嫁衣襯著肌膚如雪单山。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天幅疼,我揣著相機(jī)與錄音米奸,去河邊找鬼。 笑死爽篷,一個(gè)胖子當(dāng)著我的面吹牛悴晰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逐工,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铡溪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漂辐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起佃却,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤者吁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后饲帅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體复凳,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年灶泵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了育八。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赦邻,死狀恐怖髓棋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惶洲,我是刑警寧澤按声,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站恬吕,受9級(jí)特大地震影響签则,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铐料,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一渐裂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钠惩,春花似錦柒凉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至举塔,卻和暖如春绑警,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背央渣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工计盒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芽丹。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓北启,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咕村,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容