AOP実装ノートの春頃前後共通の簡単な例SpringAOP(注釈的指向プログラミング)、

第一次Springmvc.xmlファイルに導入A、(この例では、フレームベースのSSMに実装されています)

  1、名前空間の導入

xmlns:AOP = "http://www.springframework.org/schema/aop"

  2、XSI:以下の導入のschemaLocation(ノートでは、その春のバージョンを参照してください

http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/contextのhttp:/ /www.springframework.org/schema/context/spring-context-4.3.xsd

  3、<豆> </豆>次のノードを追加します

<! - オープンスキャンパッケージ、サービス層を除去する必要がスキャンされずに、回避トランザクションエラー- > 
< コンテキスト:スキャンコンポーネントベース・パッケージ=「com.hp」> 
        <! - 設定サービス層注釈をスキャンする必要があります- - > 
        < コンテキスト:フィルタ-除外するタイプ=「注釈」表現=「org.springframework.stereotype.Service」 /> 
</ コンテキスト:コンポーネントスキャン> 
 <! - オープンAOPのアノテーションの実施形態を、このステップはそう、あまりsのではありませんJavaクラスAOPの注意を有効にします- > 
< AOP:AspectJの-自動プロキシ/>

第二に、切断されたクラス

/ ** 
 * @Aspectは、カットクラスとして宣言されるであろう
 * @Componentは、ばね管理に引き渡されます
 * @authorのWSL 
 * 
 * / 
@Component 
@Aspect 
パブリック クラスmyaopが{ 
    / *    *ことわざ()メソッドを、唯一のプロキシオブジェクトであります個人的な理解は、この方法でプラスということです
     * @Pointcutだけでこれを行うための方法をベースと名前の値に他の方法を指摘した後、間違った場合、私を修正してください
     *ノート@Pointcut意味の役割はどこカットオフポイント値の値を定義するための正確なポイントを勝ちますすべてのメソッドcom.hp.controllerパケットである   * / 
    @Pointcut(値= "実行(com.hp.controller .. * *。*(..))" プライベート無効格言(){} 長い時間= 0 ; // ことわざ(上記で定義されたプロキシオブジェクトの値を実行する前に、本明細書に注意法) 


@Before(値= "格言()" プライベート のボイド(){前 の時間 = 新新getTime()A日付(); System.out.printlnは( "実行メソッドの前に" ); } // メソッドの実行 @後に(値= "ことわざ()" プライベート ボイド{()の後に (するSystem.out.println "実行方法の後に実行され、実行時間" +(新しい新しい A日付()getTime() - 。時間)); } // 周りのアドバイス。ProceedingJoinPoint引数がなければならないことに注意してください。人は、プログラムの実行を中断するかどうか、戻り値を持っている必要があります同時に、Webアプリケーションは、ページ404を報告します。 @Around(値=「格言()」公衆SayAroundオブジェクト(ProceedingJoinPoint PJP){ 進むオブジェクト = ヌル; System.out.printlnは( "サラウンドタイプの注釈フロントサラウンド..通知" ); ロング TIME2 = 新しい新しいA日付()getTime();. 試し{ 進む = pjp.proceed( ); } キャッチ(ThrowableのE){ e.printStackTrace(); } System.out.printlnは( "注釈の種類..アドバイス周りサラウンド、実行時間" +(新新 A日付()getTime() - 。TIME2)); 戻り進みます; } }

第三に、@Pointcut注釈に拡大します

  1、公共のいずれかの方法

実行(パブリック * *(..))

  メソッドの先頭を設定するための2

実行(*セット*(..))

  図3に示すように、方法は、インタフェースcom.hp.inに定義され

実行(* com.hp.in。*(..))

  4、すべてのメソッドをパッケージ化com.hp.wsl

実行(* com.hp.wsl。*。*(..))

  5、com.hp.wslパッケージとすべてのメソッドのサブパッケージ

実行(* com.hp.wsl .. *。*(..))

第四に、感謝

  この記事では、上の描画します。

     trayvonの  テキスト、元のアドレス:先人「ポイントカット注釈式を、春AOPはビス」:https://my.oschina.net/u/2474629/blog/1083448

     小カイセン最初の  前任者、「実装の簡単な例では春AOPのノートのテキスト、」、元のアドレス:https://www.cnblogs.com/caijh/p/7154691.html

      間違っている場合は、あなたが私を修正感謝。

おすすめ

転載: www.cnblogs.com/wangshilei/p/11972106.html