AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。 AOP與OOP是面向不同領(lǐng)域的兩種設(shè)計(jì)思想。 OOP(面向?qū)ο缶幊蹋┽槍?duì)業(yè)務(wù)處理過(guò)程的實(shí)體及其屬性和行為進(jìn)行抽象封裝,以獲得更加清晰高效的邏輯單元?jiǎng)澐帧?/span> AOP則是針對(duì)業(yè)務(wù)處理過(guò)程中的切面進(jìn)行提取,它所面對(duì)的是處理過(guò)程中的某個(gè)步驟或階段,以獲得邏輯過(guò)程中各部分之間低耦合性的隔離效果。 我們可以單單從上面的字面上來(lái)理解AOP和OOP的話,用下面的理解也不為過(guò): OOP實(shí)際上是對(duì)對(duì)象的屬性和行為的封裝,而AOP對(duì)于這點(diǎn)就無(wú)從談起,但是AOP是處理某個(gè)步驟和階段的,從中進(jìn)行切面的提取,也就是說(shuō),如果幾個(gè)或更多個(gè)邏輯過(guò)程中,有重復(fù)的操作行為,AOP就可以提取出來(lái),運(yùn)用動(dòng)態(tài)代理,實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù),這么說(shuō)來(lái)可能太含蓄,如果說(shuō)到權(quán)限判斷,日志記錄等,可能就明白了。如果我們單純使用OOP,那么權(quán)限判斷怎么辦?在每個(gè)操作前都加入權(quán)限判斷?日志記錄怎么辦?在每個(gè)方法里的開(kāi)始、結(jié)束、異常的地方手動(dòng)添加日志?所有,如果使用AOP就可以借助代理完成這些重復(fù)的操作,就能夠在邏輯過(guò)程中,降低各部分之間的耦合了。二者揚(yáng)長(zhǎng)補(bǔ)短,互相結(jié)合最好。 下面詳細(xì)了解一些AOP的概念:
Spring 中 AOP 代理由 Spring 的 IoC 容器負(fù)責(zé)生成、管理,其依賴關(guān)系也由 IoC 容器負(fù)責(zé)管理。至于Spring的AOP在項(xiàng)目中具體是怎么實(shí)現(xiàn)的,下篇博客會(huì)以日志記錄為例進(jìn)行學(xué)習(xí)。 |
|
來(lái)自: IT_易風(fēng) > 《學(xué)習(xí)》