我有一个带有许多不同@RestController的spring boot应用程序 在一开始,它们全部都执行以下操作:
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();
}
我该如何使一个父控制器对所有请求进行这些检查,然后使每个子控制器继续其独特的逻辑?
答案 0 :(得分:0)
就像评论中提到的其他人一样,有很多方法可以使它起作用。就个人而言,我希望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
而无法扩展,并且随着应用程序的增长,对控制器或日志语句的微小更改将变得乏味。