AOP全稱 aspect-priented programming 它是面向切面編程的思想核心java
AOp和OOP即面向對象的編程語言,不相沖突,他們是兩個相輔相成的實際模型express
Spring的同期並不依賴與AOP編程
AOP術語介紹編程語言
cross-cutting concern:系統層面上的服務穿插到業務邏輯的處理流程之中對象
aspect:當須要是,將其放到應用程序上,不須要是將其從應用程序總脫力出來接口
Advice:是Aspect具體的實現get
Joinpoint:aspect在應用程序執行時加入業務流程的時機io
Pointcut:指定某個aspect在那些joinpoint時被穿插至應用程序之上編譯
Target:一個advice被應用的對象或者目標對象jdk
Instruction:爲己編寫,編譯完成的類,在執行時期動態加入一些方法,而不用修改或者增長任何代碼
Weave:被應用對象之上的過程
Spring對AOP的支持
純java語言來編寫 定義pointcuts能夠使用配置文件 不支持屬性成員的jointpoints
Spring建立Adivice
Before Advice
目標對象的方法執行以前被調用
經過建立類實現methodBeforeAdvice接口來實現
目標對象的方法執行以後被調用
經過建立類實現methodAfterAdvice接口來實現
Aound Advice在執行以前和以後來執行響應的操做
要實現MethodInterceptor接口
ThorowAdvice
異常發生的時候,通知某個服務對象作處理
實現ThrowsAdvice
基於XMLSchema
簡化代碼實現
容易對應用程序進行維護
全部元素都定義在<aop:config>標籤元素中
<aop:config> 包含多個切面,切入點,advice等標籤元素
<aop:aspect>定義一個切面
<aop:pointcut>定義切入點的信息
expression執行的表達式 *字符,表明匹配任意的返回類
():匹配了一個不接受任何參數的方法
(..):匹配了接受任意參數的方法
<aop:around>定義around advice
基於Annotation
以註解的方式對java的普通類進行標註
@AspectJ採用jdk5.0的註解技術
在配置文件中啓用AspectJ <aop:aspecrj-autoproxy/>