欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring中IOC控制反轉(zhuǎn)依賴注入和new對象的區(qū)別說明

 更新時(shí)間:2022年02月25日 11:05:36   作者:看不見鯨魚的鼻子  
這篇文章主要介紹了spring中IOC控制反轉(zhuǎn)依賴注入和new對象的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

IOC控制反轉(zhuǎn)依賴注入和new對象的區(qū)別

spring默認(rèn)是單例模式的,依賴注入其中操作的都是一個(gè)對象

new對象

單例中如果要做到注入的效果就是在類的頭部進(jìn)行實(shí)例化對象,這個(gè)時(shí)候該對象不管使用與否都貫穿該類的始終。該類對象不被回收,這個(gè)實(shí)例化對象也不會(huì)被回收,因?yàn)榇嬖谝脿顟B(tài)。如果要使用多例對象則最好使用new創(chuàng)建對象而不是依賴注入,即使依賴注入有多例模式也不推薦。

依賴注入:是指程序運(yùn)行過程中,如果需要調(diào)用另一個(gè)對象協(xié)助時(shí),無須再代碼中創(chuàng)建被調(diào)用者,而是依賴外部的注入。spring的依賴注入對調(diào)用者和被調(diào)用者幾乎沒有任何要求,完全支持對pojo之間依賴關(guān)系的管理

依賴注入

如果調(diào)用者使用到被調(diào)用對象才會(huì)從spring容器中取出依賴的對象注入到使用的類中,如果不用則會(huì)放回spring容器的對象池中,做到內(nèi)存節(jié)省并且代碼的耦合度也降低。面向接口編程中,讓依賴注入只需要找到符合規(guī)范的接口注入即可實(shí)現(xiàn)調(diào)用者和被調(diào)用者解耦。對象的調(diào)用關(guān)系由spring管理。

進(jìn)入實(shí)習(xí)之后,就之前不是很理解的依賴注入很好奇,在實(shí)際工作中也有留意使用并且理解多了之后就查閱文檔總結(jié)出這個(gè)結(jié)論,如果有錯(cuò)誤的請大佬指出。 

spring的IOC容器比New對象究竟好在哪

私以為以上各位都沒有對spring ioc的精髓講解到位。大多都在很模糊的說是什么,抽象化的表述或者含糊其辭的說概念。

ioc的思想最核心的地方在于,資源不由使用資源的雙方管理,而由不使用資源的第三方管理,這可以帶來很多好處。

  • 第一,資源集中管理,實(shí)現(xiàn)資源的可配置和易管理。
  • 第二,降低了使用資源雙方的依賴程度,也就是我們說的耦合度。

也就是說,甲方要達(dá)成某種目的不需要直接依賴乙方,它只需要達(dá)到的目的告訴第三方機(jī)構(gòu)就可以了,比如甲方需要一雙襪子,而乙方它賣一雙襪子,它要把襪子賣出去,并不需要自己去直接找到一個(gè)賣家來完成襪子的賣出。它也只需要找第三方,告訴別人我要賣一雙襪子。這下好了,甲乙雙方進(jìn)行交易活動(dòng),都不需要自己直接去找賣家,相當(dāng)于程序內(nèi)部開放接口,賣家由第三方作為參數(shù)傳入。甲乙互相不依賴,而且只有在進(jìn)行交易活動(dòng)的時(shí)候,甲才和乙產(chǎn)生聯(lián)系。反之亦然。這樣做什么好處么呢,甲乙可以在對方不真實(shí)存在的情況下獨(dú)立存在,而且保證不交易時(shí)候無聯(lián)系,想交易的時(shí)候可以很容易的產(chǎn)生聯(lián)系。甲乙交易活動(dòng)不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。因?yàn)榻灰子傻谌絹碡?fù)責(zé)聯(lián)系,而且甲乙都認(rèn)為第三方可靠。那么交易就能很可靠很靈活的產(chǎn)生和進(jìn)行了。

這就是ioc的核心思想。生活中這種例子比比皆是,支付寶在整個(gè)淘寶體系里就是龐大的ioc容器,交易雙方之外的第三方,提供可靠性可依賴可靈活變更交易方的資源管理中心。另外人事代理也是,雇傭機(jī)構(gòu)和個(gè)人之外的第三方。嗯,就這樣,希望對題主有幫助。

==============update==============

  • 在以上的描述中,誕生了兩個(gè)專業(yè)詞匯,依賴注入和控制反轉(zhuǎn)
  • 所謂的依賴注入,則是,甲方開放接口,在它需要的時(shí)候,能夠講乙方傳遞進(jìn)來(注入)
  • 所謂的控制反轉(zhuǎn),甲乙雙方不相互依賴,交易活動(dòng)的進(jìn)行不依賴于甲乙任何一方,整個(gè)活動(dòng)的進(jìn)行由第三方負(fù)責(zé)管理。

這就是spring IOC的思想所在,不要只談DI IOC這些概念。

人之所惡在好為人師,不實(shí)知,謹(jǐn)慎言。

下面是我個(gè)人看了上面文章結(jié)合評論中的問題進(jìn)行的一次回復(fù):

問:有點(diǎn)小問題,如果是甲方要襪子,那么他也必須依賴于一個(gè)賣襪子的人,這之間就有聯(lián)系了,也就是說甲方也是依賴于乙方的,因?yàn)槿绻曳經(jīng)]有賣襪子的話,甲方也就買不到襪子,自然也就沒法繼續(xù)進(jìn)行,這怎么就解隅了呢??

答:是解耦的,平時(shí)new A()時(shí)候是要import包地址的,這就已經(jīng)寫死了,以后這個(gè)引用就死死的指向了那個(gè)類,想改變很麻煩,用ac.getbean(“A”)就沒引入包,也就是所謂的不依賴 (就是跟那類A沒關(guān)系),它只從容器找那個(gè)叫A的類,至于你給我的是啥,看容器中咋配置。舉了例子:比如說是個(gè)很常用的dao類,開始你new的很開心,萬一以后需求大改,數(shù)據(jù)庫mysql換db2了,這個(gè)dao文件基本就得重寫,如果這個(gè)類已經(jīng)封裝編譯為class文件,不能改了怎么辦。又或者你實(shí)例化了一個(gè)常用接口。原來那個(gè)實(shí)現(xiàn)類A不好,要換成B做他的實(shí)現(xiàn)類,重寫他的方法。你就得把項(xiàng)目中所有實(shí)例化的地方都找出來,再改成B(大項(xiàng)目用了很多的話你就一個(gè)一個(gè)改類似,萬一漏了就是不小的bug)。用ioc就沒 這個(gè)麻煩,直接在配置文件中將叫A的bean指向你新寫的類就可以。所以說他依賴的乙方不是賣襪子的,而是一個(gè)中介

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    通常注冊賬戶上傳用戶圖像時(shí)需要進(jìn)行預(yù)覽,這篇文章就是教我們?nèi)绾斡?Java 實(shí)現(xiàn)圖片裁剪預(yù)覽功能,需要的朋友可以參考下
    2015-07-07
  • 通過IEAD+Maven快速搭建SSM項(xiàng)目的過程(Spring + Spring MVC + Mybatis)

    通過IEAD+Maven快速搭建SSM項(xiàng)目的過程(Spring + Spring MVC + Mybatis)

    這篇文章主要介紹了通過IEAD+Maven快速搭建SSM項(xiàng)目的過程(Spring + Spring MVC + Mybatis),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 使用Java實(shí)現(xiàn)5種負(fù)載均衡算法實(shí)例

    使用Java實(shí)現(xiàn)5種負(fù)載均衡算法實(shí)例

    負(fù)載均衡指由多臺(tái)服務(wù)器以對稱的方式組成一個(gè)服務(wù)器集合,每臺(tái)服務(wù)器都具有等價(jià)的地位,都可以單獨(dú)對外提供服務(wù)而無須其他服務(wù)器的輔助,這篇文章主要給大家介紹了關(guān)于使用Java實(shí)現(xiàn)5種負(fù)載均衡算法的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 詳解Spring事件發(fā)布與監(jiān)聽機(jī)制

    詳解Spring事件發(fā)布與監(jiān)聽機(jī)制

    Spring提供了ApplicationContext事件機(jī)制,可以發(fā)布和監(jiān)聽事件,這個(gè)特性非常有用。Spring內(nèi)置了一些事件和監(jiān)聽器,例如在Spring容器啟動(dòng)前,Spring容器啟動(dòng)后,應(yīng)用啟動(dòng)失敗后等事件發(fā)生后,監(jiān)聽在這些事件上的監(jiān)聽器會(huì)做出相應(yīng)的響應(yīng)處理
    2021-06-06
  • 超詳細(xì)的Spring Boot入門筆記(總結(jié))

    超詳細(xì)的Spring Boot入門筆記(總結(jié))

    本篇文章主要介紹了超詳細(xì)的Spring Boot入門筆記(總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • List轉(zhuǎn)變?yōu)槎禾?hào)分隔的String(Java7和Java8分別實(shí)現(xiàn))

    List轉(zhuǎn)變?yōu)槎禾?hào)分隔的String(Java7和Java8分別實(shí)現(xiàn))

    這篇文章主要介紹了Java7和Java8分別實(shí)現(xiàn)List轉(zhuǎn)變?yōu)槎禾?hào)分隔的String,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java正則表達(dá)式之split()方法實(shí)例詳解

    Java正則表達(dá)式之split()方法實(shí)例詳解

    這篇文章主要介紹了Java正則表達(dá)式之split()方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了split方法的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-03-03
  • java常用工具類 Date日期、Mail郵件工具類

    java常用工具類 Date日期、Mail郵件工具類

    這篇文章主要為大家詳細(xì)介紹了java常用工具類,包括Date日期、Mail郵件工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Shiro安全框架的主要組件及認(rèn)證過程簡介

    Shiro安全框架的主要組件及認(rèn)證過程簡介

    這篇文章主要介紹了Shiro安全框架的主要組件及認(rèn)證過程簡介,Shiro?是一個(gè)強(qiáng)大靈活的開源安全框架,可以完全處理身份驗(yàn)證、授權(quán)、加密和會(huì)話管理,本文就來介紹一下此框架的核心組成,需要的朋友可以參考下
    2023-08-08
  • IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    很多朋友被idea左側(cè)的圖標(biāo)不見了這一問題搞的焦頭爛額,不知道該怎么操作,今天小編就交大家如何控制編輯左側(cè)的功能圖標(biāo) ICON,文字內(nèi)容不多,主要通過兩張截圖給大家說明,感興趣的朋友一起看看吧
    2021-05-05

最新評論