当前位置: 首页 > 面试题库 >

春季4 vs球衣REST Web服务

喻子航
2023-03-14
问题内容

我们计划使用Spring 4.0.6版本制作一个新应用程序。我们使用可以返回“ XML”或“ JSON”的控制器。在上一个项目中,我们已经使用JAX-RS
API成功地将Spring的Jersey支持REST支持,但是在阅读了前辈的几篇文章和建议后,他们说Spring提供了很好的REST支持。

如果我不使用JAX-RS和Jersey而使用Spring REST支持,则使我真正感到困惑的一些点是:

  1. 在Spring MVC中如何进行编组和拆组?

  2. 封送是否需要使用jax-rs进行封送?

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

如果Spring证明对REST很好的支持,我仍然感到困惑,那为什么人们仍然选择Jersey来支持REST?真正希望了解更多详细信息。

如果我说错了,请忽略它。举例说明确实很有帮助。

提前致谢!!


问题答案:

我想说Jersey和Spring MVC都很棒-每个项目都有自己的风格和优势。无论如何,Stack
Overflow并不是进行主观比较的合适位置(您的问题很快就会被解决)。如果您已经使用Spring进行其他所有操作,并且 不需要 使用JAX-
RS,那么Spring MVC完全有意义。

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

  1. Spring MVC 取代了MessageBodyReaders / Writers,使用HttpMessageConverters来处理(取消)编组REST资源。Spring MVC处理内容协商,并为工作选择最佳的可用转换器(您可以注释方法以提示它们产生/使用哪种媒体类型)。

  2. 不,没有必要使用JAX-RS来(取消)编组资源。实际上,JAX-RS实现和Spring MVC使用第三方序列化库来完成这项工作。因此它不受特定标准的约束。

  3. 在其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等)。



 类似资料:
  • 问题内容: 我目前正在尝试使用Jersey 创建一个,但无法让Jersey接它。 除了在实现中使用批注之外,我找不到任何实际用法示例,甚至找不到如何使用它。看似写在泽西岛上的人在某些帖子中暗示这足以使它被拾起。 我需要指定一些SPI服务文件,还是将其添加到某个工厂的某个地方? 注意:我正在Glassfish 3.1中运行,并使用Spring 3.1。Spring可能会以某种方式接管s 的自动加载似

  • 如spring boot博客所述 我尝试自定义我的对象序列化。 在我的配置中添加了一个新的配置bean之后 当我尝试输出类用户的实例时,json结果不在CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES中 也许我需要在我的Jersey配置中注册一些东西来激活我的自定义obejctMapper配置 谢谢

  • 问题内容: 我有一个Java应用程序,它从主类开始(不是Spring Boot应用程序)。而且我想使用Spring retry在连接丢失时重试。据我所知,我需要在Spring应用程序的主类之上添加@EnableRetry批注,然后在我的方法之上使用@Retryable进行重试。但是我认为这在非​​Spring应用程序中将不起作用。是否可以在简单的Java应用程序(而非spring应用程序)中使用s

  • 我需要在java上开发简单的web服务。我是java技术新手,根据几篇文章,我决定将JAX-RS(Jersey)与嵌入式http服务器(Grizzly2)结合使用,因为它看起来适合构建REST服务,部署似乎很简单。 在我的开发环境中,所有工作都很完美(使用IntllijIdea)。 但当我尝试在测试服务器上部署时,每个请求都返回“500内部错误”(偶数/application.wadl) 简单资源

  • 问题内容: 我正在设计一个基于JPA / Hibernate,Spring和Wicket的新应用。我对DAO和Service层之间的区别还不清楚。根据维基百科,DAO是 一个为某种类型的数据库或持久性机制提供抽象接口的对象,提供某些特定的操作而不公开数据库的详细信息。 我想知道DAO是否可以包含与数据访问无关的方法,但是使用查询执行起来会更容易吗?例如,“获取在一组特定机场上运营的所有航空公司的列

  • 问题内容: 我如何让Spring从中加载Hibernate的属性? 我们正在使用Spring和JPA(以Hibernate作为实现)。Spring 指定了JPA语言和Hibernate属性: 在这种配置中,Spring通过applicationContext.xml读取所有的Hibernate属性。当我创建一个(位于我的类路径的根目录,与META- INF处于同一级别)时,Hibernate根本不