aop(aspect oriented programming 面向切面程式設計),通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。aop是oop的延續,是軟體開發中的乙個熱點,也是spring框架中的乙個重要內容,是函式式程式設計的一種衍生范型。利用aop可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。
常用於日誌記錄,效能統計,安全控制,事務處理,異常處理等等。
切面(aspect):切面是乙個關注點的模組化,這個關注點可能是橫切多個物件;
連線點(join point):連線點是指在程式執行過程中某個特定的點,比如某方法呼叫的時候或者處理異常的時候;
通知(advice):指在切面的某個特定的連線點上執行的動作。spring切面可以應用5中通知:
切點(pointcut):指匹配連線點的斷言。通知與乙個切入點表示式關聯,並在滿足這個切入的連線點上執行,例如:當執行某個特定的名稱的方法。
引入(introduction):引入也被稱為內部型別宣告,宣告額外的方法或者某個型別的字段。
目標物件(target object):目標物件是被乙個或者多個切面所通知的物件。
aop**(aop proxy):aop**是指aop框架建立的對物件,用來實現切面契約(包括通知方法等功能)
織入(wearving):指把切面連線到其他應用出程式型別或者物件上,並建立乙個被通知的物件。或者說形成**物件的方法的過程。
基於**的經典springaop;
純pojo切面;
@aspectj註解驅動的切面;
注入式aspectj切面(適用於spring各版本);
前三種都是springaop實現的變體,springaop構建在動態**基礎之上,因此,spring對aop的支援侷限於方法的攔截。
springaop的支援必須呀匯入spring-aspects的jar包
org.springframeworkgroupid>
spring-aspectsartifactid>
4.3.5.releaseversion>
dependency>
採用註解的方式定義切面以及通知
@aspect
public
class
audience
@before("performance()")
public
void
silencecellphones()
@before("performance()")
public
void
takeseats()
@afterreturning("performance()")
public
void
system.out.println("clap clap clap");
}@afterthrowing("performance()")
public
void
demandrefund()
}
class="com.wqh.concert.audience"/>
定義pojo類,這裡只是把上面定義的註解全public class audiencexml
public void takeseats()
system.out.println("clap clap clap");
}public void demandrefund()
name="audiencexml"
class="com.wqh.concert.audiencexml"/>
ref="audiencexml">
id="perform"
expression="execution(* com.wqh.concert.performance.perform(..))"/>
method="silencecellphones"
pointcut-ref="perform"/>
method="takeseats"
pointcut-ref="perform"/>
pointcut-ref="perform"/>
method="demandrefund"
pointcut="execution(* com.wqh.concert.performance.perform(..))"/>
aop:aspect>
aop:config>
Spring AOP的概念及具體配置
一.aop aspect oriented programming 面向切面程式設計 實現的功能 動態的增強乙個方法 先攔截該方法,再增強 可以在方法執行的各個階段加入一些另外的方法來增強原有的方法。二.概念 1.橫切關注點 要動態增強的功能就是關注點,就是增強的 所在的方法 2.連線點 類中的方法...
VO DTO DO PO 概念及其區別
領域模型中的實體類分為四種模型 vo dto do po,各種實體類用於不同業務層次間的互動,並會在層次內實現實體類之間的轉化。用於展示層,它的作用是把某個指定頁面 或元件 的所有資料封裝起來。主要用於展示層與服務層之間的資料傳輸物件 就是從現實世界中抽象出來的有形或無形的業務實體。它跟持久層 通常...
物聯網概念及其介紹
物聯網概念解析 1.物聯網的核心和基礎仍然是網際網路 2.其使用者端延伸和擴充套件到了任何物品與物品之間,進行資訊交換和通訊 物聯網的定義是通過射頻識別 b rfid 裝置 b 紅外感應器 全球定位系統 雷射掃瞄器等資訊感測裝置,按約定的協議,把任何物品與網際網路相連線,進行資訊交換和通訊,以實現智...