Spring學(xué)習(xí)筆記——AOP(一)

aop:是spring主要核心部分,即面向切面編程。與我們平常所接觸到的oop編程對等,是一種編程思想。從OOP角度分析,我們關(guān)注業(yè)務(wù)的處理邏輯,是屬于縱向的行為,從AOP角度分析,我們關(guān)注對象行為發(fā)生時的問題,是屬于橫向的行為。它利用一種稱為"橫切"的技術(shù),剖解開封裝的對象內(nèi)部,并將那些影響了多個類的公共行為封裝到一個可重用模塊,并將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來,便于減少系統(tǒng)的重復(fù)代碼,降低模塊之間的耦合度,并有利于未來的可操作性和可維護性。

使用"橫切"技術(shù),AOP把軟件系統(tǒng)分為兩個部分:核心關(guān)注點橫切關(guān)注點。業(yè)務(wù)處理的主要流程是核心關(guān)注點,與之關(guān)系不大的部分是橫切關(guān)注點。橫切關(guān)注點的一個特點是,他們經(jīng)常發(fā)生在核心關(guān)注點的多處,而各處基本相似,比如權(quán)限認證、日志、事物。AOP的作用在于分離系統(tǒng)中的各種關(guān)注點,將核心關(guān)注點和橫切關(guān)注點分離開來。

  • AOP核心概念

1、橫切關(guān)注點

對哪些方法進行攔截,攔截后怎么處理,這些關(guān)注點稱之為橫切關(guān)注點

2、切面(aspect)

類是對物體特征的抽象,切面就是對橫切關(guān)注點的抽象

3、連接點(joinpoint)

被攔截到的點,因為Spring只支持方法類型的連接點,所以在Spring中連接點指的就是被攔截到的方法,實際上連接點還可以是字段或者構(gòu)造器,通俗點講類里面哪些方法可以被增強。

4、切入點(pointcut)

對連接點進行攔截的定義。通俗點講類里面實際被增強的方法。

Spring中AOP代理由Spring的IOC容器負責(zé)生成、管理,其依賴關(guān)系也由IOC容器負責(zé)管理。因此,AOP代理可以直接使用容器中的其它bean實例作為目標,這種關(guān)系可由IOC容器的依賴注入提供。Spring創(chuàng)建代理的規(guī)則為:

1、默認使用Java動態(tài)代理來創(chuàng)建AOP代理,這樣就可以為任何接口實例創(chuàng)建代理了

2、當需要代理的類不是代理接口的時候,Spring會切換為使用CGLIB代理,也可強制使用CGLIB

AOP編程其實是很簡單的事情,縱觀AOP編程,程序員只需要參與三個部分:

1、定義普通業(yè)務(wù)組件

2、定義切入點,一個切入點可能橫切多個業(yè)務(wù)組件

3、定義增強處理,增強處理就是在AOP框架為普通業(yè)務(wù)組件織入的處理動作

所以進行AOP編程的關(guān)鍵就是定義切入點和定義增強處理,一旦定義了合適的切入點和增強處理,AOP框架將自動生成AOP代理,即:代理對象的方法=增強處理+被代理對象的方法。

作用

  • 監(jiān)控函數(shù)的調(diào)用
  • 捕獲異常發(fā)生

實際應(yīng)用在:事務(wù)、安全、日志等橫切關(guān)注。

(很多概念來源于其他博客,該篇章僅供自己學(xué)習(xí)筆記使用,更多詳細講解請看下這篇文章http://www.cnblogs.com/xrq730/p/4919025.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,591評論 19 139
  • 本章內(nèi)容: 面向切面編程的基本原理 通過POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,425評論 0 9
  • 一、AOP的基礎(chǔ) 1.1、AOP是什么??? 考慮這樣一個問題:需要對系統(tǒng)中的某些業(yè)務(wù)做日志記錄,比如支付系統(tǒng)中的...
    聶叼叼閱讀 2,222評論 2 17
  • 團隊開發(fā)框架實戰(zhàn)—面向切面的編程 AOP 引言 軟件開發(fā)的目標是要對世界的部分元素或者信息流建立模型,實現(xiàn)軟件系統(tǒng)...
    Bobby0322閱讀 4,350評論 4 49
  • 因為成長環(huán)境和個性的因素,經(jīng)常會壓抑自己,不相信自己,模仿別人,久而久之表面上覺得自己很充實,其實內(nèi)心還是空的,今...
    新麗0101閱讀 212評論 0 0

友情鏈接更多精彩內(nèi)容