选择 spring 控制器类型时的设计注意事项

Design considerations while choosing type of spring controller

在典型的 Web 应用程序中,我的后端服务和客户端 (AngularJS) 部署在不同的容器中,我应该如何选择在 Spring Boot 中编码的控制器。

我应该使用

  1. @Controller 与@ResponseBody 或
  2. 使用@RestController 或
  3. 使用spring-boot-starter-jersey?

每种设计选择的优缺点是什么。

@RestController 只是@Controller 和@ResponseBody 的替代品,因此当第一个选项更具表现力和简洁时,使用它们没有意义。

其他选项之间的主要区别是 spring-boot-starter-jersey 默认使用 JAX-RS 注释,而 @RestController 是 Spring 的一部分。您可以使用这两种解决方案轻松地为您的 AngularJS 应用程序创建所需的 REST 服务。

Spring 据说 REST 服务不符合 JAX-RS 语言规范,但由您决定它对您是否重要。设计 RESTful 架构不需要 JAX-RS。

此外,Jersey 只是一个 JAX-RS 实现,因此它只允许您构建 REST 端点,而 Spring 为您提供更多功能,例如,创建动态视图,其中一个简单的 JSON 输出不够

所以总而言之,由您决定什么才是真正适合您的需求。