这两种弹簧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"
}
}
答案 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。
所以首选方法取决于。一般来说:
我发现Spring在Tomcat中更容易配置和设置,但这是我的看法。此外,Spring异常处理@ControllerAdvice
和@ExceptionHandler
完全解决了我的RESTful JSON处理问题,但是也许JAX-RS也有类似的东西。
作为最后的陈述,我认为你应该主要根据你要运行的环境来定义你的RESTful框架(JAX-RS,Spring,甚至是另一个),还要考虑你要运行的所有集成和资源。需要你的项目。
答案 1 :(得分:2)
第一种方法是JAX-RS方法,并且与任何JAX-RS实现兼容。
第二个使用Spring MVC注释,只与Spring MVC兼容。