我想说Jersey和Spring MVC都很棒-每个项目都有自己的风格和优势。无论如何,Stack
Overflow并不是进行主观比较的正确位置(您的问题很快就会被解决)。如果您已经使用Spring进行其他所有操作,并且 不需要 使用JAX-
RS,那么Spring MVC完全有意义。
对于(un)编组之类的功能,JAX-RS毕竟只是一个规范-其他库可以提供类似的功能而无需实现相同的API。
Spring MVC 取代了MessageBodyReaders / Writers,使用HttpMessageConverters来处理(取消)编组REST资源。Spring MVC处理内容协商,并为工作选择最佳的可用转换器(您可以注释方法以提示它们产生/使用哪种媒体类型)。
不,没有必要使用JAX-RS来(取消)编组资源。实际上,JAX-RS实现和Spring MVC使用第三方序列化库来完成这项工作。因此它不受特定标准的约束。
在其4.0.6版本中,Spring支持许多HttpMessageConverters,其中Jackson用于JSON,JAXB用于XML等。Spring 4.1.0添加了更多的HttpMessageConverters:
- Jackson现在可用于JSON和XML
- Google Protobuf
- Gson for JSON,替代Jackson
要回答您的最后一点,
@XmlRootElement是一个JAXB注释,它不是JAX-
RS的一部分。Spring支持JAXB。
有关Spring中REST的更完整示例,请查看此入门指南(您将在10-15分钟内获得运行的完整示例)。
同样,您的问题的最后一部分是非常主观的-
有许多流行的解决方案可用于在JVM中构建REST服务,而不仅仅是Jersey和Spring(Dropwizard,Play!framework等)。



