GET请求的Spring注释

时间:2014-05-21 22:29:52

标签: java spring spring-mvc

这两种弹簧GET方法有什么区别?哪一个是首选方法?

@Component
@Scope("request")
@Path("/")
public class TestComponent {

    @GET
    @Path("/hello")
    public String printHello() {
          return "hello";
    }
}

VS

@Controller
public class TestController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello() {
         return "hello"
    }
}

2 个答案:

答案 0 :(得分:4)

  

这两种类型的弹簧GET方法有什么区别?

您发布的两个示例中只有一个是实际的 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不是正式的规范,因此从一个提供者到另一个提供者的实现可能略有不同,但概念是相同的。

  

哪一种是首选方法?

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,甚至是另一个),还要考虑你要运行的所有集成和资源。需要你的项目。

答案 1 :(得分:2)

第一种方法是JAX-RS方法,并且与任何JAX-RS实现兼容。

第二个使用Spring MVC注释,只与Spring MVC兼容。