Spring Aspect Oriented Program
一、實現方式種類:
1. 基于jdk動態代理
2. cglib
二、兩者區別:
1. jdk動態代理需要實現 InvocationHandler
2. cglib 無需實現接口,使用字節碼技術去修改class文件使繼承
三、注解使用:
1. Before("execution(*包名*)")
前置建議,它是在執行一個業務方法之前插入的切面
2. After
當方法執行成功或者出現異常的時候都會執行切面
3. AfterReturning
代碼正常結束前返回
4. AfterThrowing
代碼出現異常時會執行
5. Around
= Before + AfterReturning
它相當于一個AOP鏈,如果當前AOP執行后,就讓下一個AOP執行
四. execution語法介紹
- execution(public * *(..))
- execution(* set*(..))
- execution(* com.xyz.service.AccountService.*(..))
- execution(* com.xyz.service..*.*(..))
- 上面只是舉例說明了execution的語法,下面是一個標準的語法定義
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
浙公網安備 33010602011771號