Spring Boot应用程序中的控制器继承

时间:2019-07-08 15:18:16

标签: spring-boot spring-mvc spring-restcontroller

我有一个带有许多不同@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();
        }

我该如何使一个父控制器对所有请求进行这些检查,然后使每个子控制器继续其独特的逻辑?

1 个答案:

答案 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而无法扩展,并且随着应用程序的增长,对控制器或日志语句的微小更改将变得乏味。