如何从控制器获得SpringAOP建议中的请求URI、请求方法



控制器:

@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(* *(..))")

建议将切入点表达式的范围保持为仅针对最佳结果所需的内容。

相关内容

  • 没有找到相关文章

最新更新