选择 spring 控制器类型时的设计注意事项
Design considerations while choosing type of spring controller
在典型的 Web 应用程序中,我的后端服务和客户端 (AngularJS) 部署在不同的容器中,我应该如何选择在 Spring Boot 中编码的控制器。
我应该使用
- @Controller 与@ResponseBody 或
- 使用@RestController 或
- 使用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 输出不够
所以总而言之,由您决定什么才是真正适合您的需求。
在典型的 Web 应用程序中,我的后端服务和客户端 (AngularJS) 部署在不同的容器中,我应该如何选择在 Spring Boot 中编码的控制器。
我应该使用
- @Controller 与@ResponseBody 或
- 使用@RestController 或
- 使用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 输出不够
所以总而言之,由您决定什么才是真正适合您的需求。