Spring 在注释方法上使用 AspectJ 会导致 404 错误
Spring with AspectJ on annoted method leads 404 error
我有以下方面处理所有 REST 控制器:
@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)是当我在控制器 class 上实现一个接口时,@Override
用 @GetMapping
注释的方法并将此方法从接口放置到@Pointcut
正如第一段代码所说。我建议后面有类似的东西。有人可以解释一下吗?
@Pointcut(value="execution(* com.company.app.features.*.controller.*.*(..))")
public void controller() { }
@Pointcut(value="execution(@within(org.springframework......GetMapping)")
public void getMapping() { }
@Before("controller() && getMapping(object)")
public void controllerGetMapping(Object objectIfYouNeedIt) {
// Log
}
我有以下方面处理所有 REST 控制器:
@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)是当我在控制器 class 上实现一个接口时,@Override
用 @GetMapping
注释的方法并将此方法从接口放置到@Pointcut
正如第一段代码所说。我建议后面有类似的东西。有人可以解释一下吗?
@Pointcut(value="execution(* com.company.app.features.*.controller.*.*(..))")
public void controller() { }
@Pointcut(value="execution(@within(org.springframework......GetMapping)")
public void getMapping() { }
@Before("controller() && getMapping(object)")
public void controllerGetMapping(Object objectIfYouNeedIt) {
// Log
}