真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中的ioc是什么

java中的ioc是什么相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。

專業(yè)從事網(wǎng)站設(shè)計(jì)、做網(wǎng)站,高端網(wǎng)站制作設(shè)計(jì),小程序設(shè)計(jì),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用html5+CSS3前端渲染技術(shù),成都響應(yīng)式網(wǎng)站建設(shè),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

什么是ioc

ioc全稱是【Inversion of Control】控制反轉(zhuǎn),按照字面意思理解,將控制反轉(zhuǎn)過來。

為什么要有ioc

java是一門面向?qū)ο蟮恼Z言,我們的應(yīng)用程序通過一個(gè)個(gè)對(duì)象之間的相互關(guān)聯(lián)和作用來完成功能,在網(wǎng)上看到一個(gè)特別形象的比喻,這里借用一下:

java中的ioc是什么

這里的每一個(gè)齒輪代表一個(gè)對(duì)象,對(duì)象之間彼此緊密咬合形成一個(gè)系統(tǒng),這樣的系統(tǒng)對(duì)象之間的耦合度非常高,所謂的耦合度就是關(guān)系的緊密程度,高耦合度帶來的問題顯而易見,只要有一個(gè)齒輪發(fā)生故障,其它齒輪也無法工作,進(jìn)而整個(gè)系統(tǒng)都無法正常工作,這種牽一發(fā)而動(dòng)全身情況如何才能改善呢?看下圖:

java中的ioc是什么

中間這個(gè)齒輪好比一個(gè)粘合劑將其它幾個(gè)齒輪粘合起來,所有的齒輪都交由中間這個(gè)齒輪管理,試著把中間這個(gè)齒輪拿掉我們可以看到這三個(gè)齒輪之間彼此毫無關(guān)系,即使一個(gè)齒輪出了故障,也不會(huì)影響到其它齒輪,中間這個(gè)齒輪就好比ioc容器,其它齒輪就是對(duì)象,可以看出引入了ioc容器,對(duì)象之間的耦合度降低了。當(dāng)我們修改一個(gè)對(duì)象的時(shí)候不需要去考慮其它對(duì)象,因?yàn)樗粫?huì)對(duì)其它對(duì)象造成影響。

ioc的原理

這里說到的ioc容器到底是個(gè)什么東東,又是什么讓它具有如此神奇的力量?

先來看一下沒有ioc容器的時(shí)候,對(duì)象A依賴對(duì)象B,A在運(yùn)行到某一時(shí)刻的時(shí)候會(huì)去創(chuàng)建B的對(duì)象,在這里A具有主動(dòng)權(quán),它控制了對(duì)象B的創(chuàng)建。

引入ioc以后對(duì)象A和對(duì)象B之間沒有了直接聯(lián)系,當(dāng)A運(yùn)行的時(shí)候由ioc容器創(chuàng)建B對(duì)象在適當(dāng)?shù)臅r(shí)候注入到A中,在這里,控制權(quán)由A對(duì)象轉(zhuǎn)移到了ioc容器。這也就是控制反轉(zhuǎn)名稱的由來。

看一個(gè)例子:

public class UserServiceImpl {
    private UserDao userDaoImpl
    public List getAllUser(){
        userDaoImpl new UserDaoImpl();
        return userDaoImpl.getAllUser();

}
}

這里UserServiceImpl依賴UserDaoImpl,需要在UserServiceImpl中創(chuàng)建UserDaoImpl對(duì)象,對(duì)象之間的耦合性很高,如何解耦呢?

我們可以通過反射來解耦,反射可以根據(jù)類的全限定名在程序運(yùn)行時(shí)創(chuàng)建對(duì)象,可以這樣做,將類的全限定名配置在xml文件中,在程序運(yùn)行時(shí)通過反射讀取該類的全限定名,動(dòng)態(tài)的創(chuàng)建對(duì)象,賦值給userDao接口userDaoImpl.這樣做后UserServiceImpl和UserDaoImpl之間沒有了直接的關(guān)系,當(dāng)我們需要替換UserDaoImpl對(duì)象的時(shí)候只需要在配置文件中去修改類的全限定名就可以了,非常的靈活方便,ioc容器的實(shí)現(xiàn)就是這個(gè)原理。

Ioc容器可以自動(dòng)的幫我們完成以上一系列操作,我們需要做的就是通過配置文件告訴ioc需要?jiǎng)?chuàng)建哪個(gè)類以及類和類之間的關(guān)系。

 

控制反轉(zhuǎn)和依賴注入

在這里需要提到一個(gè)概念依賴注入,很多初學(xué)者搞不清楚控制反轉(zhuǎn)和依賴注入之間的關(guān)系,其實(shí)他們是對(duì)同一事務(wù)的不同角度的描述。

控制反轉(zhuǎn)是一種設(shè)計(jì)思想而依賴注入是這種思想的具體實(shí)現(xiàn)

具體說控制反轉(zhuǎn)就是將創(chuàng)建userDaoImpl對(duì)象的控制權(quán)反轉(zhuǎn)過來由UserServiceImpl交給了ioc容器,強(qiáng)調(diào)的是一種能力和思想,ioc容器具有了控制權(quán)。

依賴注入就是ioc容器將UserServiceImpl所依賴的對(duì)象userDaoImpl,注入給UserServiceImpl,強(qiáng)調(diào)的是一個(gè)過程和實(shí)現(xiàn)

關(guān)于java中的ioc就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章題目:java中的ioc是什么
分享URL:http://weahome.cn/article/pehjhg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部