我有一个带有许多不同@restController的春季启动应用程序一开始,所有这些都会执行以下操作:
if (user != null) {
log.debug("Got the following request: " + request.getURI().getPath() + " from: " + user.getName());
} else {
log.error("Warning user is not defined");
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
如何制作父控制器,所有请求都将进行这些检查,而每个子控制器将继续其唯一的逻辑?
就像评论中提到的其他人一样,有很多方法可以使此工作。就个人而言,我希望Spring AOP记录这些内容或拦截器/过滤器。但是,您可以通过继承本身来实现此功能,这不是一个好的解决方案。做一些类似的例子,希望您可以从那里挑选。
public class A extends Logger {
//RequestMapping stuff
public void test(){
logInfo(user);
}
}
public class Logger {
public void logInfo(User user){
// Your log statements here
}
}
这不仅使它毫无意义,而且不可计入,因为您必须对find and replace
进行很多操作,并且对控制器进行了较小的更改,否则日志语句将随着应用程序的增长而乏味。