我从以下方面着手处理所有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)是当我在控制器类上实现接口时,
@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
}