控制器:
@PostMapping("api/postmethod")
public Response getResponse(@RequestParam String name, @RequestBody Object obj...){
....
}
方面:
@After("execution(* *(..))")
public void after(JoinPoint joinPoint){
...
}
如何在方面建议中获取请求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
和 - 在根包
com.aop.example.web.controller
内的任何类中
对于像@PostMapping(path = "api/postmethod")
这样的后期映射,应该修改方面代码以获得postMapping.path()
"将参数传递给建议"的文档参考可在此处阅读
更新:
还要注意,以下切入点表达式的作用域是全局的。这可以建议/针对应用程序中的任何方法调用,并且通常会产生不希望的结果。
@After("execution(* *(..))")
建议将切入点表达式的范围保持为仅针对最佳结果所需的内容。