这两种spring GET方法有什么区别?哪种方法是首选?
@Component
@Scope("request")
@Path("/")
public class TestComponent {
@GET
@Path("/hello")
public String printHello() {
return "hello";
}
}
对比
@Controller
public class TestController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String printHello() {
return "hello"
}
}
最佳答案
What is the difference between these two types of spring GET methods?
您发布的两个示例中只有一个是实际的 Spring GET,这是第二个 @RequestMapping(value = "/hello", method = RequestMethod.GET)
注释。它是一个 Spring MVC 实现。
另一个,第一个 @GET @Path("/hello")
,实际上是一个 JAX-RS GET 规范,你需要一个 implementation JAX-RS 使其工作。
它们之间的主要区别不仅在于“GET”,还在于整体框架。已经有 detailed articles like this one 涵盖了 JAX-RS 和 Spring MVC RESTful 之间的差异。
由于 REST 不是一个正式的规范,它的实现可能因供应商的不同而略有不同,但概念是相同的。
Which one is the preferred method?
Spring MVC 的 RESTful 将更紧密地集成到 Spring Framework 中。
JAX-RS 将遵循 Java EE 实现,集成将有利于完整的 Java EE 环境。
您还可以“合并”Spring 和 Java EE。有些连接器可以集成 Spring 和 JAX-RS,因此您可以从中受益。参见 this example。
所以首选方法取决于。一般来说:
- 如果您在完整的 Java EE 容器(如 JBoss 或 Glassfish)中运行,请使用 JAX-RS 方法。 JAX-RS 的实现将在环境中可用。
- 如果您在 Spring IoC 中运行并且想脱离 Java EE,请使用 Spring MVC RESTful 方法。
- 如果您使用的是 Java EE Web 配置文件,例如 Tomcat,您将必须根据特定标准来决定,例如您将使用哪个界面框架,并为此构建应用程序。
我发现 Spring 在 Tomcat 中更容易配置和设置,但这是我的看法。此外,Spring 异常处理 @ControllerAdvice
和 @ExceptionHandler
完美地解决了我的 RESTful JSON 处理问题,但也许 JAX-RS 也有类似的东西。
作为最后的陈述,我认为您应该主要根据您要运行的环境来定义您的 RESTful 框架(JAX-RS、Spring 或什至其他框架),但也要考虑您要进行的所有集成和资源需要您的项目。
关于java - GET 请求的 Spring 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794936/