我有以下方面hadling所有REST控制器:弹簧用AspectJ上annoted方法导致404错误
@Pointcut(value="execution(* com.company.app.features.*.controller.*.*(..))")
public void controller() { }
@Before("controller()")
public void before(JoinPoint jp) {
// Log
}
即根据需要对在@Pointcut
定义的包的所有方法能正常工作。
但是,当我尝试将@Before
指向只注释为@GetMapping(..)
的方法时,该URL会导致404错误,但是另一些方法通常会起作用。
我该怎么做?我尝试没有人正在努力:
- 仅修订@Before:
@Before("method() && @annotation(GetMapping)")
- 修订只@Pointcut:
@Pointcut(value="execution(@GetMapping com.company...
- 修订只@Pointcut:
@Pointcut(value="execution(@GetMapping * com.company...
同样的结果(错误404)是当我通过控制器类实现接口时,@Override
用@GetMapping
注解的方法并将此会见作为第一段代码说的是从接口到@Pointcut
。我建议背后有类似的东西。有人会解释我吗?
before-method should not take an argument Joinpoint –
感谢您的评论,但不解决我的问题。 –
拦截控制器调用的惯用方法是使用[HandlerInterceptor](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html)。 –