SpringBoot AOPプログラミング
7796 ワード
SpringBoot AOPプログラミング最初のステップ:POMファイルにAOP依存 をインポートする第2ステップ:AOP接面 を実現する 1.@Aspect注記を使用して、クラスを断面クラス としてマークします. 2.@Pointcutを使用して切り込み点を定義します.たとえば、あるpackageの下のすべての関数が注釈であるなどの規則的な式です. 3.前のステップの切り込みポイントについて異なる通知を作成します: @Before//メソッド実行前に呼び出された @After//メソッド実行後に呼び出され、メソッド実行が成功したかどうかにかかわらず @AfterReturning//メソッドが正常に完了した後にのみ実行される通知 @AfterThrowing//メソッド投げ出し異常終了時に実行する通知 @Around//メソッドの実行前後に呼び出された通知 ステップ1:POMファイルにAOP依存をインポートする
ステップ2:AOPカットを実現する
1.@Aspect注記を使用してクラスを断面クラスとしてマーク
2.@Pointcutを使用して1つの切り込み点を定義します.たとえば、あるpackageの下のすべての関数が1つの注釈であってもよいなどの規則式です.
3.前のステップの切り込み点について、異なる通知を作成します.
@Before//メソッド実行前に呼び出されます
@After//メソッドの実行後に呼び出されます.メソッドの実行が成功したかどうかにかかわらず
@AfterReturning//メソッドが正常に完了した後にのみ実行される通知
@AfterThrowing//メソッドが異常終了を投げ出した場合に実行する通知
@Around//メソッドの実行前と後に呼び出された通知
<!--aop-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--spring aop JDK ,spring aop JDK , , proxy-target-class 。 proxy-target-class=true, ( cglib )。 -->
<!-- , -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.12</version>
</dependency>
ステップ2:AOPカットを実現する
1.@Aspect注記を使用してクラスを断面クラスとしてマーク
2.@Pointcutを使用して1つの切り込み点を定義します.たとえば、あるpackageの下のすべての関数が1つの注釈であってもよいなどの規則式です.
3.前のステップの切り込み点について、異なる通知を作成します.
@Before//メソッド実行前に呼び出されます
@After//メソッドの実行後に呼び出されます.メソッドの実行が成功したかどうかにかかわらず
@AfterReturning//メソッドが正常に完了した後にのみ実行される通知
@AfterThrowing//メソッドが異常終了を投げ出した場合に実行する通知
@Around//メソッドの実行前と後に呼び出された通知
// ,
@Aspect //
@Component // IOC
public class MyWebLogAspect{
// myWebLog, , execution( ) controller
@Pointcut("execution(public * com.haoge.controller.*.*(..))" )
public void myWebLog(){
}
// , ,
@Before("myWebLog()")
public void doBefore(){
System.out.println("------ , ---")
}
// Before
@After("myWebLog()")
public void doAfter(){
System.out.println("AOP after");
}
// Before , , value returning
@AfterReturning(value="myWebLog()",returning="result")
public void doAfterReturning(Object result){
//
}
}