java - GET 请求的 Spring 注解

标签 java spring spring-mvc

这两种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/

相关文章:

java - 如何配置Spring支持@Cacheable注解

java - 删除 JButton 边框并在内部安装 ImageButton

java - 跨平台转换为 json 字符串时相同的 JSON 字符串

java - 运行测试时排除 SpringApplicationRunListener

java - 使用 Spring MVC、JAVA 的 SOAP

mysql - 带连接的计数查询中的 Sql 异常

java - 为什么线程在持有锁时而不是在获取锁之前测试条件/属性?

java - 计算十六进制圆周率,BBP公式的实现

java - 在 Spring-MVC 中访问应用程序属性

java - 显示点击的特定链接的数据