在SpringBoot中使用AOP——通知中的引數
文章目錄
本文基於 在SpringBoot中使用AOP
獲取被被通知方法引數並傳遞給通知方法,主要有兩種方式:
- 使用JoinPoint獲取:Spring AOP提供使用org.aspectj.lang.JoinPoint型別獲取連線點資料,任何通知方法的第一個引數都可以是JoinPoint(環繞通知是ProceedingJoinPoint,JoinPoint子類),當然第一個引數位置也可以是JoinPoint.StaticPart型別,這個只返回連線點的靜態部分。
- 自動獲取:通過切入點表示式(arg())可以將相應的引數自動傳遞給通知方法;
使用JoinPoint獲取
也就是在通知的方法中,第一個引數使用JoinPoint 。(環繞通知是ProceedingJoinPoint,JoinPoint子類)
@Before(value = "printVisitLog()")
public void before(JoinPoint joinPoint) {
log.info("目標物件:" + joinPoint.getTarget());
log.info("目標方法:" + joinPoint.getSignature().getDeclaringTypeName() +"." + joinPoint.getSignature().getName());
log.info("傳入引數:" + Arrays.toString(joinPoint.getArgs()));
}
自動獲取
@Pointcut(value = "execution(public * com.boco.fyk..controller..*.*(..)) && !within(com.boco.fyk.core.config.controller.*)"
+ " && args(userId,..)")
public void printVisitLog(String userId) {}
@Before(value = "printVisitLog(userId)")
public void before(String userId) {
log.info("引數:" + userId);
}
在後置返回通知中獲取返回值
在後置返回通知中獲取返回值,只需要在@AfterReturning註解中,加入屬性returning,值隨便取。
@AfterReturning(value = "printVisitLog()", returning="v")
public void afterReturning(Object v) {
log.info(v.toString());
}
在後置異常通知中獲取異常
要在後置異常通知中,獲取異常,只需要在@AfterThrowing註解中,加入屬性throwing ,值隨便取。
@AfterThrowing(value = "printVisitLog()", throwing = "e")
public void afterThrowing(Object e) {
......
}
原文地址:https://blog.csdn.net/fyk844645164/article/details/100314371
相關文章
- springboot中的AOPSpring Boot
- 什麼是AOP,以及在Springboot中自定義AOPSpring Boot
- SpringBoot AOP的使用Spring Boot
- SpringBoot使用AOPSpring Boot
- h2database在springboot中的使用DatabaseSpring Boot
- 在SQL Server 2008中的SP上使用表型別值引數MHSQLServer型別
- mybatis:在springboot中的配置MyBatisSpring Boot
- 在Linux中,linux核心引數如何修改?Linux
- Java中main方法引數String[ ] args的使用JavaAI
- .net 中的 Dto 引數封裝物件 使用封裝物件
- java方法引數中萬用字元的使用Java字元
- SpringBoot 中 JPA 的使用Spring Boot
- springboot中RedisTemplate的使用Spring BootRedis
- 你知道在springboot中如何使用WebSocket嗎Spring BootWeb
- SpringBoot中搭配AOP實現自定義註解Spring Boot
- 關於C++中在模板引數中使用Lambda表示式的問題C++
- Python中的引數遮蔽Python
- Android中的AOPAndroid
- 在 `el-upload` 的事件中傳遞更多引數的方法事件
- 在Java程式中列印java執行時引數Java
- JavaScript 中的引數處理JavaScript
- angular cli中的--flat引數Angular
- 程式中的函式引數函式
- ThinkPHP 類似 AOP 思想的引數驗證PHP
- Spring AOP獲取攔截方法的引數名稱跟引數值Spring
- SpringBoot 介面引數解密的實現方法(使用註解)Spring Boot解密
- 在 Lua 中使用引數技巧
- 在sqlnet.ora中設定引數限制使用者登入時間SQL
- springboot中YAML使用二Spring BootYAML
- [譯] Python 中的鍵值(具名)引數:如何使用它們Python
- springboot 2.0中 PUT請求 接收不到引數解決辦法Spring Boot
- Tomcat在SpringBoot中是如何啟動的TomcatSpring Boot
- 教你如何使用Springboot注入帶引數的建構函式Spring Boot函式
- Linux 中 grep -P引數的作用Linux
- 揭秘 Go 中的函式引數Go函式
- 如何使用macOS Big Sur中“通知中心”的小元件Mac元件
- 在Docker中執行SpringBoot程式DockerSpring Boot
- SpringBoot是如何解析引數的Spring Boot