Spring 4 vs Jersey用于REST Web服务

Rob*_*ena 117 java rest spring web-services spring-mvc

我们计划用spring 4.0.6版本创建一个新的应用程序.我们使用可以返回"XML"或"JSON"的控制器.在以前的项目,我们使用JAX-RS API成功实施新泽西州和Spring支持REST,但是从学长读了几篇文章和建议后,他们说,弹簧提供了相当不错的REST支持.

如果我在不使用JAX-RS和Jersey的情况下使用Spring REST支持,那些让我感到困惑的一些要点是:

  1. 如何在Spring MVC中完成编组和解组?

  2. 编组或解组是否需要使用jax-rs.

  3. 如果弹簧自动处理编组和解编,那么它如何知道xmlRootElements.

我仍然感到困惑,如果Spring证明了REST的非常好的支持那么为什么人们仍然会使用Jersey进行REST?真的想了解更多细节.

如果我说错了,请忽略它.对示例的解释非常有用.

提前致谢!!

Bri*_*zel 119

我说Jersey和Spring MVC都很棒 - 每个项目都有自己的风格和优势.无论如何,Stack Overflow不适合进行主观比较(你的问题很快就会被关闭).如果您已经将Spring用于其他所有内容并且不需要使用JAX-RS,那么Spring MVC就足够了.

关于(un)编组等功能,JAX-RS毕竟只是一个规范 - 其他库可以提供类似的功能而无需实现相同的API.

  1. Spring MVC使用HttpMessageConverters来处理(un)编组REST资源,而不是MessageBodyReaders/Writers .Spring MVC处理内容协商并为作业选择最佳可用转换器(您可以注释方法以暗示它们生成/使用的媒体类型).

  2. 不,没有必要使用JAX-RS来(un)编组资源.事实上,JAX-RS实现和Spring MVC使用第三方序列化库来完成这项工作; 所以它不依赖于特定的标准.

  3. 在其4.0.6版本中,Spring支持许多HttpMessageConverters,其中包括Jackson for JSON,JAXB for XML和许多其他版本.Spring 4.1.0增加了更多HttpMessageConverters:

回答你的最后一点,@XmlRootElement是一个JAXB注释,不是JAX-RS的一部分.Spring支持JAXB.

有关Spring中REST的更完整示例,请查看此入门指南(您将在10-15分钟内获得完整的示例).

你的问题的最后一部分也是非常主观的 - 在JVM中有许多流行的解决方案用于构建REST服务,而不仅仅是Jersey和Spring(Dropwizard,Play!Framework等).

  • "你的问题很快就会被关闭"!不那么快:) (8认同)
  • 我喜欢stackoverflow,我喜欢quora,我从来没有喜欢这个关闭的主观问题政策,我从来没有想过在quora中提出技术问题 (6认同)
  • 你会在哪里建议有人问这样的问题? (2认同)

VGa*_*aur 22

AFAIK Spring REST支持基于Spring MVC而不是JAX-RS实现,而Jersey实现了JAX-RS规范.那些在他们的项目中使用Spring(Core,AOP或MVC)的人选择Spring ReST支持而不是JAX-RS实现者.

我推荐Jersey成熟,实现JAX-RS并且易于使用.

  • 如果您使用(或者您想使用)Spring引导,Jersey也是一个不错的选择.cf [documentation](http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-jersey) (2认同)