Spring IOC 作為 Spring 核心的一部分,其翻譯是 Inversion of Control (反轉(zhuǎn)控制)
創(chuàng)新互聯(lián)自2013年起,先為龍城等服務(wù)建站,龍城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為龍城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。IOC 容器其核心是將 對(duì)象 交給 IOC 容器來(lái)管理,這樣一來(lái)對(duì)象的控制權(quán)由 開(kāi)發(fā)者 反轉(zhuǎn)到了 IOC 容器。什么是 IOC 容器呢?容器顧名思義是存儲(chǔ)東西的器件 ,如一杯水的杯子就是一個(gè)容器,C++ STL模板里的隊(duì)列、棧也是容器,只不過(guò)前者是用來(lái)存儲(chǔ)水這種液體,后者是用來(lái)存儲(chǔ)基本數(shù)據(jù)或者數(shù)據(jù)結(jié)構(gòu)。而 IOC 容器 就是為了 存儲(chǔ) 那些控制權(quán)被反轉(zhuǎn)的對(duì)象。
反轉(zhuǎn)的是什么對(duì)象本身不是反轉(zhuǎn),反轉(zhuǎn)的是對(duì)象資源的注入方式,以及對(duì)象資源的獲取方式 (所以說(shuō)是控制反轉(zhuǎn)),當(dāng)然還會(huì)有生命周期的一些控制。
對(duì)比拿通俗易懂的話來(lái)說(shuō),以吃飯 (把食物看作對(duì)象)為例子,傳統(tǒng)方式的獲取對(duì)象就像是自己在家做飯烹飪,你需要選購(gòu)食材、加工食材、烹飪 ,最后才能吃到食物,過(guò)程是漫長(zhǎng)的,麻煩的。而Spring提供的 IOC 控制反轉(zhuǎn)的方式 就是 點(diǎn)外賣(mài) ,相當(dāng)于有餐廳 這樣一個(gè)資源中介者 為我們選購(gòu)食材、加工食材、烹飪,我們只需要坐等美味即可。這是一種資源集中管理的思想。
傳統(tǒng)方式:
IOC控制反轉(zhuǎn):
什么是DI依賴(lài)注入Dependency Injection,是控制反轉(zhuǎn)的一種具體實(shí)現(xiàn)。我們都知道一個(gè)類(lèi) (資源)的對(duì)象是有屬性或者其他的依賴(lài)關(guān)系的,在傳統(tǒng)的創(chuàng)建對(duì)象方法中,我們通常使用構(gòu)造器或者set方法來(lái)為對(duì)象賦值或建立聯(lián)系。當(dāng)將控制權(quán)轉(zhuǎn)交給IOC容器后,想要達(dá)到同樣的目的我們就要進(jìn)行依賴(lài)注入,在Spring中只需要配置好bean就可以指定目標(biāo)所需要的資源,Spring就會(huì)自動(dòng)為我們注入。雖然看起來(lái)很高級(jí),但底層Spring也是使用的set方法和構(gòu)造器。
談?wù)処OC的作用說(shuō)了這么久IOC,它到底比起傳統(tǒng)的方法好在哪呢?傳統(tǒng)的創(chuàng)建對(duì)象的方式是需要寫(xiě)在一個(gè)類(lèi)里面的,那么這個(gè)類(lèi)就依賴(lài)于了另一個(gè)類(lèi),很明顯代碼的耦合增加了,如果想要修改所依賴(lài)的類(lèi)就需要去源碼重新new一個(gè)對(duì)象,使用IOC就只需要修改獲取資源的類(lèi)型。
其實(shí)IoC對(duì)編程帶來(lái)的大改變不是從代碼上,而是從思想上,發(fā)生了“主從換位”的變化。應(yīng)用程序原本是老大,要獲取什么資源都是主動(dòng)出擊,但是在IoC/DI思想中,應(yīng)用程序就變成被動(dòng)的了,被動(dòng)的等待IoC容器來(lái)創(chuàng)建并注入它所需要的資源了。
IoC很好的體現(xiàn)了面向?qū)ο笤O(shè)計(jì)法則之一—— 好萊塢法則:“別找我們,我們找你”;即由IoC容器幫對(duì)象找相應(yīng)的依賴(lài)對(duì)象并注入,而不是由對(duì)象主動(dòng)去找。
在生活中也是,如果有一個(gè)集中管理資源的中介者,能夠幫助管理所有資源,那么我們只需要在需要的時(shí)后向中介者索取,而不是時(shí)刻想著怎么同時(shí)管理所有資源。
張開(kāi)濤Spring ioc 理解
超細(xì)致Spring IOC理解
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:SpringIOC理解-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://vcdvsql.cn/article2/cdjooc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站制作、響應(yīng)式網(wǎng)站、云服務(wù)器、虛擬主機(jī)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容