SpringIOC理解-創(chuàng)新互聯(lián)

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ù)解決您的所有建站問題。IOC 容器

其核心是將 對象 交給 IOC 容器來管理,這樣一來對象的控制權(quán)由 開發(fā)者 反轉(zhuǎn)到了 IOC 容器。什么是 IOC 容器呢?容器顧名思義是存儲東西的器件 ,如一杯水的杯子就是一個容器,C++ STL模板里的隊列、棧也是容器,只不過前者是用來存儲水這種液體,后者是用來存儲基本數(shù)據(jù)或者數(shù)據(jù)結(jié)構(gòu)。而 IOC 容器 就是為了 存儲 那些控制權(quán)被反轉(zhuǎn)的對象。

反轉(zhuǎn)的是什么

對象本身不是反轉(zhuǎn),反轉(zhuǎn)的是對象資源的注入方式,以及對象資源的獲取方式 (所以說是控制反轉(zhuǎn)),當(dāng)然還會有生命周期的一些控制。

對比

拿通俗易懂的話來說,以吃飯 (把食物看作對象)為例子,傳統(tǒng)方式的獲取對象就像是自己在家做飯烹飪,你需要選購食材、加工食材、烹飪 ,最后才能吃到食物,過程是漫長的,麻煩的。而Spring提供的 IOC 控制反轉(zhuǎn)的方式 就是 點外賣 ,相當(dāng)于有餐廳 這樣一個資源中介者 為我們選購食材、加工食材、烹飪,我們只需要坐等美味即可。這是一種資源集中管理的思想。

傳統(tǒng)方式:

IOC控制反轉(zhuǎn):

什么是DI

依賴注入Dependency Injection,是控制反轉(zhuǎn)的一種具體實現(xiàn)。我們都知道一個類 (資源)的對象是有屬性或者其他的依賴關(guān)系的,在傳統(tǒng)的創(chuàng)建對象方法中,我們通常使用構(gòu)造器或者set方法來為對象賦值或建立聯(lián)系。當(dāng)將控制權(quán)轉(zhuǎn)交給IOC容器后,想要達(dá)到同樣的目的我們就要進(jìn)行依賴注入,在Spring中只需要配置好bean就可以指定目標(biāo)所需要的資源,Spring就會自動為我們注入。雖然看起來很高級,但底層Spring也是使用的set方法和構(gòu)造器。

談?wù)処OC的作用

說了這么久IOC,它到底比起傳統(tǒng)的方法好在哪呢?傳統(tǒng)的創(chuàng)建對象的方式是需要寫在一個類里面的,那么這個類就依賴于了另一個類,很明顯代碼的耦合增加了,如果想要修改所依賴的類就需要去源碼重新new一個對象,使用IOC就只需要修改獲取資源的類型。

其實IoC對編程帶來的大改變不是從代碼上,而是從思想上,發(fā)生了“主從換位”的變化。應(yīng)用程序原本是老大,要獲取什么資源都是主動出擊,但是在IoC/DI思想中,應(yīng)用程序就變成被動的了,被動的等待IoC容器來創(chuàng)建并注入它所需要的資源了。

IoC很好的體現(xiàn)了面向?qū)ο笤O(shè)計法則之一—— 好萊塢法則:“別找我們,我們找你”;即由IoC容器幫對象找相應(yīng)的依賴對象并注入,而不是由對象主動去找。

在生活中也是,如果有一個集中管理資源的中介者,能夠幫助管理所有資源,那么我們只需要在需要的時后向中介者索取,而不是時刻想著怎么同時管理所有資源。

張開濤Spring ioc 理解

超細(xì)致Spring IOC理解

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文題目:SpringIOC理解-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://bm7419.com/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)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司