国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Spring內(nèi)核研究-set方法注入和構(gòu)造函數(shù)注入
Spring內(nèi)核研究-set方法注入和構(gòu)造函數(shù)注入
       Spring種提供了2種常用的注入方式,set方法注入和構(gòu)造函數(shù)注入。由于這2種注入方式很相似,都可以滿足我們的需求,所以在大多數(shù)情況下我們忽視了這2種注入方式的區(qū)別。下面讓我們看看這2種注入方式的特點。
 
        我們先看看Spring在使用set方法注入時,是怎樣實例化一個Bean和Bean的合作者的:

        在A中有一個setB方法用來接收B對象的實例。那么Spring實例化A對象的過程如下:

        在不考慮Bean的初始化方法和一些Spring回調(diào)的情況下,Spring首先去調(diào)用A對象的構(gòu)造函數(shù)實例化A,然后查找A依賴的對象本例子中是B(合作者)。一但找到合作者,Spring就會調(diào)用合作者(B)的構(gòu)造函數(shù)實例化B。如果B還有依賴的對象Spring會把B上依賴的所有對象都按照相同的機(jī)制實例化然后調(diào)用A對象的setB(B b)b對象注入給A
        因為Spring調(diào)用一個對象的set方法注入前,這個對象必須先被實例化。所以在"使用set方法注入"的情況下Spring會首先調(diào)用對象的構(gòu)造函數(shù)。
        我們在來看通過構(gòu)造函數(shù)注入的過程:

        如果發(fā)現(xiàn)配置了對象的構(gòu)造注入,那么Spring會在調(diào)用構(gòu)造函數(shù)前把構(gòu)造函數(shù)需要的依賴對象都實例化好,然后再把這些實例化后的對象作為參數(shù)去調(diào)用構(gòu)造函數(shù)。
        在使用構(gòu)造函數(shù)和set方法依賴注入時,Spring處理對象和對象依賴的對象的順序時不一樣的。一般把一個Bean設(shè)計為構(gòu)造函數(shù)接收依賴對象時,其實是表達(dá)了這樣一種關(guān)系:他們(依賴對象)不存在時我也不存在,即“沒有他們就沒有我”。
        通過構(gòu)造函數(shù)的注入方式其實表達(dá)了2個對象間的一種強(qiáng)的聚合關(guān)系:組合關(guān)系。就比如一輛車如果沒有輪子、引擎等部件那么車也就不存在了。而且車是由若干重要部件組成的,在這些部件沒有的情況下車也不可能存在。這里車和他的重要部件就時組合的關(guān)系。如果你的應(yīng)用中有這樣類似的場景那么你應(yīng)該使用“構(gòu)造函數(shù)注入”的方式管理他們的關(guān)系。“構(gòu)造函數(shù)注入”可以保證合作者先創(chuàng)建,在后在創(chuàng)建自己。
        通過set方法注入的方式表達(dá)了2個對象間較弱的依賴關(guān)系:聚合關(guān)系。就像一輛車,如果沒有車內(nèi)音像車也時可以工作的。當(dāng)你不要求合作者于自己被創(chuàng)建時,“set方法注入”注入比較合適。
        雖然在理論上“構(gòu)造函數(shù)注入”和“set方法注入”代表2種不同的依賴強(qiáng)度,但是在spring中,spring并不會把無效的合作者傳遞給一個bean。如果合作者無效或不存在spring會拋出異常,這樣spring保證一個對象的合作者都是可用的。所以在spring中,“構(gòu)造函數(shù)注入”和“set方法注入”唯一的區(qū)別在于2種方式創(chuàng)建合作者的順序不同。
        使用構(gòu)造函數(shù)依賴注入時,Spring保證所有一個對象所有依賴的對象先實例化后,才實例化這個對象。(沒有他們就沒有我原則)
        使用set方法依賴注入時,Spring首先實例化對象,然后才實例化所有依賴的對象。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring Bean對象的命名及初始化
Spring 后處理
和喜歡Spring的工程師談?wù)凷pring依賴注入
HashSet解析
類和模塊
javascript:原型鏈
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服