Springbootのアノテーションaop使用法チュートリアル

1.springbootのアノテーションを使用してaopを開くのは簡単です

@Aspect 
@Order(1)
@Component

@Aspect:aopを開く、@ Component:スキャンする必要がある、このクラスを有効にする、@ Order:多くのaopが開始されている、これにより構成の順序を調整できます

2.6つの一般的に使用される注釈が含まれます

@Pointcut( "")

エントリポイントを定義します。実行する必要のあるメソッドの代わりにメソッドを定義します。

たとえば、aopでメソッドAをBとCで囲む必要があります。メソッドAを置き換える方法は?代わりにエントリポイントを使用してください。エントリポイントはこのアスペクトメソッドです。

このメソッドを使用すると、aopを実行できます。aopには、メソッドが実行される前、メソッドが実行されるとき、メソッドが実行された後、実行が正常に完了し、例外を除いて実行が完了する順序があります。

対応するメモが5つあり、名前がわかりやすくなっています。

@ Before、@ Around、@ After、@ AfterReturning、@ AfterThrowing

これらのアノテーションの値は、@ Pointcut( "")定義メソッドのパッケージパスですこのエントリポイントでaopを実行しましょう。

問題に注意してください:@Aroundは@Beforeと@Afterを置き換えることができます

3.使用順序

単にすべての注釈をリストし、次のように実行プロセスの順序を確認します。

@ Around-》 @ Before-》 @ After-》 @ AfterReturning-》 @ AfterThrowing

(1)@AroundでreturnのProceedingJoinPoint.proceed()が呼び出されます。このメソッドは数回呼び出され、メソッドは数回実行されます。

@Around(value = "com.fast.framework.aop.pointcut.SystemArchitecture.logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        logger.info("around");
        return point.proceed();
    }

テストログを見る

15:37:54.865 INFO  com.fast.framework.aop.LogAop 60 around - around
15:37:54.866 INFO  com.fast.framework.aop.LogAop 44 before - before
执行切面方法
815:37:55.034 INFO  com.fast.framework.aop.LogAop 66 after - after
15:37:55.034 INFO  com.fast.framework.aop.LogAop 71 afterReturning - afterReturning
15:37:55.035 INFO  com.fast.framework.aop.LogAop 76 afterThrowing - afterThrowing

シーケンス:@ Around-》 @ Before-》エグゼクティブアスペクトメソッド-》 @ After-》 @ AfterReturning-》 @ AfterThrowing

(2)@Aroundメソッド中に呼び出されます

 @Around(value = "com.fast.framework.aop.pointcut.SystemArchitecture.logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        logger.info("around start");
        Object proceed = point.proceed();
        logger.info("around end");
        return proceed;
    }

出力ログ

18:40:52.260 INFO  com.fast.framework.aop.LogAop 60 around - around start
18:40:52.261 INFO  com.fast.framework.aop.LogAop 44 before - before
执行切面方法
818:40:52.413 INFO  com.fast.framework.aop.LogAop 62 around - around end
18:40:52.414 INFO  com.fast.framework.aop.LogAop 68 after - after
18:40:52.415 INFO  com.fast.framework.aop.LogAop 73 afterReturning - afterReturning
18:40:52.415 INFO  com.fast.framework.aop.LogAop 78 afterThrowing - afterThrowing

シーケンス:@Around Start-》 @ Before-》アスペクトメソッドの実行-》 @ Around End-》 @ After-》 @ AfterReturning-》 @ AfterThrowing

アラウンドは前に始まり、前に終わっていることがわかります。

4.織り方の情報を入手する

1.JoinPoint

2.ProceedingJoinPoint  

3. LocalVariableTableParameterNameDiscovererメソッドパラメーター名の取得:詳細については、https//blog.csdn.net/Mint6/article/details/94991183を参照してください。

JoinPointとProceedingJoinPointはほぼ同じです。いくつかの使用方法については、https://blog.csdn.net/Mint6/article/details/92121845を参照してください。

5.aopの全体的な手順

1234の使用は、上記の手順を指します

1を使用してaop開きます-" 2を使用してエントリポイント@Pointcut(" ")定義し、5つの連続した注釈を使用してaopプロセス全体記述ます-" 4を使用してアスペクトメソッド情報取得し、アスペクトを実行します。

 

添付ファイル:@Aroundメソッドは手動で戻り値を返し、ProceedingJoinPoint.proceed()またはProceedingJoinPoint.proceed()の実行結果を返す必要がありますが、返す必要があります。そうでない場合、aopはデフォルトでこのメソッドをインターセプトし、戻り値はありません。 。

おすすめ

転載: blog.csdn.net/Mint6/article/details/94994696
おすすめ