IOC是 什么?
IOC的英文名字是Inversion of Control,IOC即“控制反轉(zhuǎn)”,不是什么技術(shù),而是一種設(shè)計(jì)思想。DI(Dependency Injection)叫依賴注入,是對IoC更簡單的詮釋。
所謂的”控制反轉(zhuǎn)”就是對組件對象控制權(quán)的轉(zhuǎn)移,從程序代碼本身轉(zhuǎn)移到了外部容器,由容器來創(chuàng)建對象并管理對象之間的依賴關(guān)系。
所謂控制,指的是管理對象的權(quán)利;
所謂反轉(zhuǎn),指的是由Spring管理而不是開發(fā)者管理
依賴注入的基本原則是應(yīng)用組件不應(yīng)該負(fù)責(zé)查找資源或者其他依賴的協(xié)作對象。配置對象的工作應(yīng)該由容器負(fù)責(zé),查找資源的邏輯應(yīng)該從應(yīng)用組件的代碼中抽取出來,交給容器來完成。
DI是對IoC更準(zhǔn)確的描述,即組件之間的依賴關(guān)系由容器在運(yùn)行期決定,形象的來說,即由容器動(dòng)態(tài)的將某種依賴關(guān)系注入到組件之中。
本質(zhì)上IoC和DI是同一思想下不同維度的表現(xiàn) ,用通俗的話說就是,IoC是bean的注冊,DI是bean的初始化
IOC的作用
IoC的其中一個(gè)目的是為了解耦合,當(dāng)將一個(gè)對象交給第三方容器管理后,那么對象之間的耦合相較于傳統(tǒng) new方式會降低。同時(shí)Spring IoC也可以降低對象的管理成本,比如實(shí)現(xiàn)單例模式(默認(rèn)即是單例)等等。
要注意的是,IoC和DI的關(guān)系并不是一個(gè),類似于接口和實(shí)現(xiàn)類的區(qū)別,IoC是一種設(shè)計(jì)思想,DI是IoC 的一 種實(shí)現(xiàn),DI也稱為依賴注入,在Spring中可以通過@Autowired注解將Spring容器中的對象注入到指 定的位置。
依賴注入可以通過setter方法注入(設(shè)值注入)、構(gòu)造器注入和接口注入三種方式來實(shí)現(xiàn),Spring支持setter注入和構(gòu)造器注入,通常使用構(gòu)造器注入來注入必須的依賴關(guān)系,對于可選的依賴關(guān)系,則setter注入是更好的選擇,setter注入需要類提供無參構(gòu)造器或者無參的靜態(tài)工廠方法來創(chuàng)建對象。
IOC和DI之間的關(guān)系
依賴注入不能單獨(dú)存在,需要在ioc的基礎(chǔ)上完成操作。也就是說,只有把對象創(chuàng)建了,你才能向類里面注入值。
利用IOC的好處有
把創(chuàng)建和查找依賴對象的控制權(quán)交給了容器,由容器進(jìn)行注入組合對象,所以對象與對象之間是松散耦合,這樣也方便測試,利于功能復(fù)用,同時(shí)也使得程序的整個(gè)體系結(jié)構(gòu)更加靈活。
通過依賴注入機(jī)制,我們只需要通過簡單的配置,而無需任何代碼就可指定目標(biāo)需要的資源,完成自身的業(yè)務(wù)邏輯,而不需要關(guān)心具體的資源來自何處,由誰實(shí)現(xiàn),提高模塊化。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章題目:什么是IOC/DI?-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://jinyejixie.com/article4/deoioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、品牌網(wǎng)站建設(shè)、企業(yè)建站、微信小程序、營銷型網(wǎng)站建設(shè)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容