IOC(Inversion of Control)

1.1、IoC是什么

Ioc—Inversion of Control,即“控制反轉(zhuǎn)”,不是什么技術(shù),而是一種設(shè)計(jì)思想。在Java開發(fā)中,Ioc意味著將你設(shè)計(jì)好的對(duì)象交給容器控制,而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制。如何理解好Ioc呢?理解好Ioc的關(guān)鍵是要明確“誰(shuí)控制誰(shuí),控制什么,為何是反轉(zhuǎn)(有反轉(zhuǎn)就應(yīng)該有正轉(zhuǎn)了),哪些方面反轉(zhuǎn)了”,那我們來(lái)深入分析一下:

誰(shuí)控制誰(shuí),控制什么:傳統(tǒng)Java SE程序設(shè)計(jì),我們直接在對(duì)象內(nèi)部通過(guò)new進(jìn)行創(chuàng)建對(duì)象,是程序主動(dòng)去創(chuàng)建依賴對(duì)象;而IoC是有專門一個(gè)容器來(lái)創(chuàng)建這些對(duì)象,即由Ioc容器來(lái)控制對(duì) 象的創(chuàng)建;誰(shuí)控制誰(shuí)?當(dāng)然是IoC 容器控制了對(duì)象;控制什么?那就是主要控制了外部資源獲取(不只是對(duì)象包括比如文件等)。

為何是反轉(zhuǎn),哪些方面反轉(zhuǎn)了:有反轉(zhuǎn)就有正轉(zhuǎn),傳統(tǒng)應(yīng)用程序是由我們自己在對(duì)象中主動(dòng)控制去直接獲取依賴對(duì)象,也就是正轉(zhuǎn);而反轉(zhuǎn)則是由容器來(lái)幫忙創(chuàng)建及注入依賴對(duì)象;為何是反轉(zhuǎn)?因?yàn)橛扇萜鲙臀覀儾檎壹白⑷胍蕾噷?duì)象,對(duì)象只是被動(dòng)的接受依賴對(duì)象,所以是反轉(zhuǎn);哪些方面反轉(zhuǎn)了?依賴對(duì)象的獲取被反轉(zhuǎn)了。

備注:(重要)

、、依賴注入和控制反轉(zhuǎn)其實(shí)是一個(gè)概念,只不過(guò)稱呼是從兩個(gè)角度描述的同同一個(gè)概念。

、、在使用Spring框架后,對(duì)象的實(shí)例就反過(guò)來(lái)交給了容器來(lái)實(shí)例,這叫控制反轉(zhuǎn)

、、在容器的角度看來(lái),spring容器負(fù)責(zé)將被依賴對(duì)象賦值給調(diào)用者的成員變量,這相當(dāng)于調(diào)用者注入了它依賴的實(shí)例。這就是依賴注入。

用圖例說(shuō)明一下,傳統(tǒng)程序設(shè)計(jì)如圖2-1,都是主動(dòng)去創(chuàng)建相關(guān)對(duì)象然后再組合起來(lái):

當(dāng)有了IoC/DI的容器后,在客戶端類中不再主動(dòng)去創(chuàng)建這些對(duì)象了,如圖2-2所示:


spring依賴注入(xml)大項(xiàng)目推薦使用



1.通過(guò)set方法注入

2.通過(guò)構(gòu)造函數(shù)注入

3.自動(dòng)注入


4.屬性注入


注意(如果重載了構(gòu)造函數(shù),就必須寫一個(gè)默認(rèn)的構(gòu)造函數(shù) 切記切記)


spring依賴注入(Annotation)3.0(中小項(xiàng)目推薦使用)

1.首先設(shè)置Beans.xml的schma

.2.用@Component("")創(chuàng)建bean ?用@Resource ?依賴注入

3、spring3.0之后的Annotation建議

由于開發(fā)中一般都是分為四層體系:data,dao,service,action,

建議在dao層

service

action層

@service參考(https://www.cnblogs.com/szlbm/p/5512931.html)



test

獲取bean


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容