1.aop的應用場景?
2.aop的原理?
aop 指面向切面程式設計,作為物件導向的補充,用於處理系統中分布於各個模組的橫切關注點,比如事務管理、日誌、快取等。aop實現的關鍵在於aop框架自動建立aop**,主要分為:靜態**和動態**,靜態**的代表為aspectj;而動態**則以speing aop為代表。
spring aop中的動態**主要有兩種方式,jdk動態**和cglib動態**。jdk動態**通過反射來接受被**的類,並且要求被**的類必須實現乙個介面。jdk動態**的核心是invocationhandler介面和proxy類。
如果目標類沒有實現介面,那麼spring aop會選擇使用cglib動態**目標類。cglib,是乙個**生成的類庫,可以在執行時動態的生成某個類的子類。
3.如何理解aop中的連線點、切點、增強、引介、織入、切面這些概念
連線點:程式執行的某個特定位置(如:某個方法呼叫前、呼叫後,方法丟擲異常後)。乙個類或一段程式擁有一些具有邊界性質的特定點,這些**中的特定點就是連線點。
切點:如果連線點相當於資料中的記錄,那麼切點相當於查詢條件,乙個切點可以匹配多個連線點。spring aop的規則解析引擎負責解析切點所設定的查詢條件,找到對應的連線點。
增強:增強是織入到目標類連線點上的一段程式**。spring提供的增強介面都是帶方位名的,如:beforeadvice…
引介:引介是一種特殊的增強。它為類新增一些屬性和方法。
織入:織入是將增強新增到目標類具體連線點上的過程。
切面:前面是由切點和增強(引介)組成的,它包括了對橫切關注功能的定義,也包括了對連線點的定義。
***帥氣的遠遠啊***
Spring 2 Aop面向切面程式設計
後置增強 public void after joinpoint jp,object result 異常丟擲增強 相當於異常處理的finally塊 public void afterthrowing joinpoint jp,runtimeexception e 最終增強 public void a...
aop與spring事務的異常機制
今天在做自己的專案的時候,明明在配置檔案中配置了事務管理機制,然後想測試一下事務是否生效,一直不生效 後來發現原來是因為我自己定義的日誌切面把異常抓取了,但是沒有丟擲去 後來就把異常丟擲去就行了,最重要的是 切面裡面丟擲的異常必須是spring註解抓取的子類或者等於它,具體的看下 component...
Spring 宣告式事務aop
我們故意在乙個方法裡先寫乙個插入,然後在寫乙個刪除語句。其中刪除語句的sql表達錯誤。雖然會報錯 告訴你刪除的sql語句錯誤,但是不會告訴你 插入操作成功了。也就是說 雖然程式因為錯誤沒有執行完,但是有一部分操作還是成功了。明顯不滿足我們的acid原則 原子性 一致性 隔離性 永續性 首先放上myb...