aop - 如何从控制器获取 Spring AOP 建议中的请求 URI、请求方法?
问题描述
控制器:
@PostMapping("api/postmethod")
public Response getResponse(@RequestParam String name, @RequestBody Object obj...){
....
}
方面:
@After("execution(* *(..))")
public void after(JoinPoint joinPoint){
...
}
如何在 Aspect 建议中获取请求 uri -> ("api/postmethod")?
解决方案
以下代码将获取 PostMapping 值
@Around("@annotation(postMapping) && within(com.aop.example.web.controller..*)")
public Object postMapping(ProceedingJoinPoint jp,PostMapping postMapping) throws Throwable {
System.out.println(Arrays.asList(postMapping.value()));
return jp.proceed();
}
解释 :
切入点表达式 @Around("@annotation(postMapping) && within(com.aop.example.web.controller..*)")
可以解释如下
- 用
@PostMapping
and注释的方法 - 在根包内的任何类中
com.aop.example.web.controller
对于后映射@PostMapping(path = "api/postmethod")
,应修改方面代码以获取postMapping.path()
更新 :
另请注意,以下切入点表达式的范围是 global 。这可以建议/定位应用程序中的任何方法调用,并且通常会产生不希望的结果。
@After("execution(* *(..))")
建议将切入点表达式的范围保持为仅针对最佳结果所需的范围。
推荐阅读
- flutter - showDialog 之前的颤振加载指示器
- google-cloud-platform - BigQuery 跨区域表同步
- javascript - 当 (document.exists) 不为真“firestore”时,else 语句不起作用
- firebase - 嗨我想问一下谷歌地图颤振:如何查找用户是否在多边形内我尝试过的所有解决方案都不起作用
- javascript - 我正在尝试使用 js 脚本,但它向我显示了这个错误 Uncaught ReferenceError: jQuery is not defined
- nginx - Hugo 上的 XSS JS-AlertBox
- c# - 包含逗号 C# 的查询字符串参数的多个值
- jquery - 在特定页面上将复选框值设置为 true
- influxdb - 如何加入涌入数据库查询
- html - .htaccess 有两个重定向场景