首页 文章

Spring 4 vs Jersey用于REST Web服务

提问于
浏览
112

我们计划用spring 4.0.6版本创建一个新的应用程序 . 我们使用可以返回“XML”或“JSON”的控制器 . 在之前的项目中,我们使用JAX-RS API成功实现了Jersey with Spring for REST支持,但在阅读了一些文章和老年人的建议后,他们说Spring提供了非常好的REST支持 .

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

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

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

  • 如果 spring 自动处理编组和解编,那么它如何知道xmlRootElements .

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

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

提前致谢!!

2 回答

  • 22

    我已经将Spring用于其他所有事情并且不需要使用JAX-RS,那么Spring MVC完全有道理 .

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

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

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

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

    • Jackson现在可用于JSON和XML

    • Google Protobuf

    • Gson for JSON,作为 Jackson 的替代品

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

    有关Spring中REST的更完整示例,请查看this getting started guide(您将在10-15分钟内获得完整的示例) .

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

  • 114

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

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

相关问题