我有以下方面使用所有REST控制器:
@Pointcut(value="execution(* com.company.app.features.*.controller.*.*(..))")
public void controller() { }
@Before("controller()")
public void before(JoinPoint jp) {
// Log
}
根据需要,@Pointcut
中定义的包中的所有方法都可以正常工作。
但是,当我尝试将@Before
指向仅使用@GetMapping(..)
注释的方法时,该网址会产生404错误,但是另一个通常会起作用。
我做错了什么?没有人尝试过:
@Before("method() && @annotation(GetMapping)")
@Pointcut(value="execution(@GetMapping com.company...
@Pointcut(value="execution(@GetMapping * com.company...
相同的结果(错误404)是当我在控制器类上实现接口时,@Override
使用@GetMapping
注释的方法,并将此方法从接口放到@Pointcut
as第一段代码说。我建议背后有类似的事情。有人会解释我吗?
答案 0 :(得分:1)
@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
}