今天就跟大家聊聊有關(guān)ioc在spring中的作用有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
目前成都創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、松溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。IoC——Inversion of Control,控制反轉(zhuǎn)
在Java開(kāi)發(fā)中,IoC意味著將你設(shè)計(jì)好的類交給系統(tǒng)去控制,而不是在你的類內(nèi)部控制。IoC是一種讓服務(wù)消費(fèi)者不直接依賴于服務(wù)提供者的組件設(shè)計(jì)方式,是一種減少類與類之間依賴的設(shè)計(jì)原則。
DI——Dependency Injection(依賴注入)
即組件之間的依賴關(guān)系由容器在運(yùn)行期決定,形象的來(lái)說(shuō),即由容器動(dòng)態(tài)的將某種依賴關(guān)系注入到組件之中。
依賴注入的目標(biāo)并非為軟件系統(tǒng)帶來(lái)更多的功能,而是為了提升組件重用的概率,并為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺(tái)。通過(guò)依賴注入機(jī)制,我們只需要通過(guò)簡(jiǎn)單的配置,而無(wú)需任何代碼就可指定目標(biāo)需要的資源,完成自身的業(yè)務(wù) 邏輯,而不用關(guān)心具體的資源來(lái)自何處、由誰(shuí)實(shí)現(xiàn)。
1:控制反轉(zhuǎn):
誰(shuí)控制誰(shuí)?控制什么?為何叫反轉(zhuǎn)(對(duì)應(yīng)于正向)?哪些方面反轉(zhuǎn)了 ?為何需要反轉(zhuǎn)?
2:依賴:
什么是依賴(按名詞理解,按動(dòng)詞理解)?誰(shuí)依賴于誰(shuí)?為什么需要依賴?依賴什么東西?
3:注入:
誰(shuí)注入于誰(shuí)?注入什么東西?為何要注入?
4:依賴注入和控制反轉(zhuǎn)是同一概念嗎?
5:參與者都有哪些?
6:IoC/DI是什么?能做什么?怎么做?用在什么地方?
還不能完全回答和理解,沒(méi)有關(guān)系,先來(lái)看看IoC/DI的基本思想演變,然后再回頭來(lái)回答這些問(wèn)題
IoC容器
簡(jiǎn)單的理解就是:實(shí)現(xiàn)IoC思想,并提供對(duì)象創(chuàng)建、對(duì)象裝配以及對(duì)象生命周期管理的軟件就是IoC容器。
IoC理解
1:應(yīng)用程序無(wú)需主動(dòng)new對(duì)象;而是描述對(duì)象應(yīng)該如何被創(chuàng)建即可
IoC容器幫你創(chuàng)建,即被動(dòng)實(shí)例化;
2:應(yīng)用程序不需要主動(dòng)裝配對(duì)象之間的依賴關(guān)系,而是描述需要哪個(gè)服務(wù)
IoC容器會(huì)幫你裝配(即負(fù)責(zé)將它們關(guān)聯(lián)在一起),被動(dòng)接受裝配;
3:主動(dòng)變被動(dòng),體現(xiàn)好萊塢法則:別打電話給我們,我們會(huì)打給你
4:體現(xiàn)迪米特法則(最少知識(shí)原則):應(yīng)用程序不知道依賴的具體實(shí)現(xiàn),只知道需要提供某類服務(wù)的對(duì)象(面向接口編程);并松散耦合,一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解,不和陌生人(實(shí)現(xiàn))說(shuō)話
5:是一種讓服務(wù)消費(fèi)者不直接依賴于服務(wù)提供者的組件設(shè)計(jì)方式,是一種減少類與類之間依賴的設(shè)計(jì)原則。
使用IoC/DI容器開(kāi)發(fā)需要改變的思路
1:應(yīng)用程序不主動(dòng)創(chuàng)建對(duì)象,但要描述創(chuàng)建它們的方式。
2:在應(yīng)用程序代碼中不直接進(jìn)行服務(wù)的裝配,但要描述哪一個(gè)組件需要哪一項(xiàng)服務(wù),由容器負(fù)責(zé)將這些裝配在一起。
也就是說(shuō):所有的組件都是被動(dòng)的,組件初始化和裝配都由容器負(fù)責(zé),應(yīng)用程序只是在獲取相應(yīng)的組件后,實(shí)現(xiàn)應(yīng)用的功能即可。
提醒一點(diǎn)
IoC/DI是思想,不是純實(shí)現(xiàn)技術(shù)。IoC是框架共性,只是控制權(quán)的轉(zhuǎn)移,轉(zhuǎn)移到框架,所以不能因?yàn)閷?shí)現(xiàn)了IoC就叫IoC容器,而一般除了實(shí)現(xiàn)了IoC外,還具有DI功能的才叫IoC容器,因?yàn)槿萜鞒艘?fù)責(zé)創(chuàng)建并裝配組件關(guān)系,還需要管理組件生命周期。
n工具準(zhǔn)備
1:Eclipse + Jdk6.0 ,示例用的Eclipse是Eclipse Java EE IDE for Web Developers,Version: Helios Service Release 1
2:spring-framework-3.1.0.M2-with-docs.zip
構(gòu)建環(huán)境
1:在Eclipse里面新建一個(gè)工程,設(shè)若名稱是Spring3test
2:把發(fā)行包里面的dist下面的jar包都添加到Eclipse里面
3:根據(jù)Spring的工程來(lái)獲取Spring需要的依賴包,在聯(lián)網(wǎng)的情況下,通過(guò)Ant運(yùn)行projects/build-spring-framework/build.xml,會(huì)自動(dòng)去下載所需要的jar包,下載后的包位于projects/ivy-cache/repository下面。
4:為了方便,把這些jar包也添加到Eclipse里面
開(kāi)發(fā)接口
java代碼:
public interface HelloApi { public String helloSpring3(int a); }
名稱欄目:ioc在spring中的作用有哪些-創(chuàng)新互聯(lián)
新聞來(lái)源:http://aaarwkj.com/article6/dddhog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、面包屑導(dǎo)航、域名注冊(cè)、網(wǎng)站收錄、微信公眾號(hào)、App開(kāi)發(fā)
聲明:本網(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)容