javascript
Spring核心--IOCAOP
Ioc(控制反轉(zhuǎn))
所謂的控制反轉(zhuǎn)就是應(yīng)用本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建及維護(hù),依賴對(duì)象的創(chuàng)建及維護(hù)是由外部容器負(fù)責(zé)的。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到了外部容器,控制權(quán)的轉(zhuǎn)移就是所謂反轉(zhuǎn)。
?
AOP(面向切面編程)
AOP(Aspect Orient Programming),即面向方面編程。AOP技術(shù)給人們提供了一個(gè)嶄新的視角分析和設(shè)計(jì)軟件系統(tǒng)。AOP引入了分離關(guān)注點(diǎn)形成模塊化的機(jī)制來(lái)解決橫切關(guān)注點(diǎn)的問(wèn)題。所謂的關(guān)注點(diǎn)指的是一個(gè)特定的概念、目標(biāo)或可實(shí)現(xiàn)域。系統(tǒng)正是由一組關(guān)注點(diǎn)組成,典型的軟件系統(tǒng)由多個(gè)系統(tǒng)級(jí)關(guān)注點(diǎn)和核心級(jí)關(guān)注點(diǎn)組成。核心關(guān)注點(diǎn)指業(yè)務(wù)處理的主要過(guò)程,而系統(tǒng)級(jí)關(guān)注點(diǎn)是與核心業(yè)務(wù)無(wú)關(guān),一般橫切多個(gè)核心關(guān)注點(diǎn),為這些核心關(guān)注點(diǎn)提供服務(wù),如日志記錄,安全檢測(cè)、事務(wù)處理等。AOP和OOP互為補(bǔ)充,從兩種不同的角度去認(rèn)識(shí)事物。傳統(tǒng)的OOP[4lJ編程是以對(duì)象為核心,系統(tǒng)由一系列相互依賴的對(duì)象組成,抽象的封裝好這些對(duì)象的屬性和行為,使得這些對(duì)象可以相互協(xié)作的完成特定的業(yè)務(wù)邏輯,從而完成一個(gè)完整的應(yīng)用系統(tǒng)。但隨著軟件系統(tǒng)的不斷擴(kuò)大,系列化分工越來(lái)越細(xì),對(duì)跨越多個(gè)模塊的行為進(jìn)行建模是,OOP暴露出了一些無(wú)法很好解決的問(wèn)題。OOP的核心是采用的縱向結(jié)構(gòu)去完成業(yè)務(wù)邏輯(也可理解為關(guān)注點(diǎn)),很多不同模塊可能具有相同的關(guān)注點(diǎn)(橫切關(guān)注點(diǎn)),OOP處理起來(lái)較為繁瑣,模塊間的耦合度大,后期維護(hù)和擴(kuò)展比較困難。AOP的核心是允許我們獨(dú)立的完成一個(gè)個(gè)關(guān)注點(diǎn),然后以一種松耦合的方式把這些單獨(dú)的關(guān)注點(diǎn)編織成一個(gè)完整的系統(tǒng),形成了一種模塊化橫切關(guān)注點(diǎn)的方式。與OOP相對(duì),AOP采用的是橫向結(jié)構(gòu),例如,多個(gè)模塊具有某個(gè)相同操作,這個(gè)操作就可以視為系統(tǒng)中的一個(gè)“橫切關(guān)注點(diǎn)”。簡(jiǎn)單地說(shuō),AOP就是將那些與業(yè)務(wù)無(wú)關(guān),卻為業(yè)務(wù)處理模塊共同服務(wù)的諸如并發(fā)訪問(wèn)控制的一些系統(tǒng)關(guān)注點(diǎn)(通用的功能需求),從不相關(guān)的的類之間分離出來(lái),在某個(gè)地方集中編寫,組織和維護(hù),并可以通過(guò)如AspectJ等工具將它們織入到系統(tǒng)出供業(yè)務(wù)對(duì)象使用。這是系統(tǒng)建模中抽象層次的進(jìn)一步提升,可以得到結(jié)構(gòu)清晰、模塊化強(qiáng)、代碼問(wèn)耦合度低、易于重用和維護(hù)的系統(tǒng)。
轉(zhuǎn)載于:https://www.cnblogs.com/fifiyong/p/6388806.html
總結(jié)
以上是生活随笔為你收集整理的Spring核心--IOCAOP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 利用intellijidea创建mave
- 下一篇: 双端队列与工作密取