java - Spring MVC 不兼容 Jax RS : is it risky?

标签 java rest spring-mvc

我读了很多关于 SO 的文章,比较 Jersey 和 Spring MVC。 有一点似乎很有趣: Jersey 遵循 Jax RS 标准,而 Spring MVC 则不然。

我的问题是:由于我愿意在 tomcat 服务器上部署我的 Java 应用程序,不遵循 Jax RS 标准会有什么风险?是否存在性能问题?

问候。

最佳答案

Spring 不需要遵循 JAX-RS,因为在标准创建之前,Spring 已经有了自己的描述、注入(inject)和公开资源的方式。他们可能可以在顶部实现对 JAX-RS 的支持,但其好处相当可疑,因为他们对底层系统有不同的期望,而且两者都可以同样很好地部署在简单的 servlet 容器或成熟的 JEE 服务器上。此外,此类应用程序的客户端并不关心其背后是 Spring 还是 Jersey 还是其他任何东西。

正如有人正确评论的那样,采用 JAX-RS 本身并不是一个优势。仅当周围系统也是 JEE 时才会如此,例如如果您计划普遍使用 CDI。

另一方面,如果您在相邻系统中使用 Spring,那么您显然也会在 REST 部分中使用 Spring。

如果这个 REST 应用程序是唯一的,并且不存在可集成的相邻系统,则两种选择都很好,并且没有充分的理由偏爱其中一个。我仍然会选择 Spring,因为它的生态系统更丰富并且发展更快,但这只是我的观点。

JAX-RS 的优点是容器本身支持,因此生成的应用程序会更小,因为它需要的依赖项更少。理论上这是一件好事,但历史上切换 JEE 服务器总是存在问题,因为专有配置(如何定义数据源?)、提供的库版本(服务器为您提供哪种 JAX-RS 实现?哪种)存在差异。版本?如果您针对比服务器版本更新的版本进行编码会怎样?)和类加载策略(如果您在应用程序中打包更新的 lib 版本,那么首先加载哪个版本以及何时加载?)。虽然 Spring 应用程序更大,因为它们需要包含 Springs 库,但它们对上述问题的恢复能力要强得多,因为您可以以 Spring 方式执行所有操作,因此下面的服务器就不那么有趣了。这听起来很愚蠢,但标准的东西实际上通常比非标准的东西更难移植。这当然只是我自己的经验,肯定会有人提出不同的意见。

关于java - Spring MVC 不兼容 Jax RS : is it risky?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562220/

相关文章:

java - 如何从JSP中的 "Part"类型文件中提取文件名?

java - 属性的值无法在 beforeInsert() 内更新

java - 如何在adf中使用groovy表达式显示Max

java - 将 REST 和 SOAP 服务合并在同一个类中?

scala - Scala 或 Java 中的 --cacerts 等同于什么?

java - maven项目无法启动tomcat

java - Android 解压zip文件

java - 当 RequestBody 参数的某些属性为 null 时,如何返回 400 HTTP 错误代码?

java - 如何在Spring MVC中实现DI?

mysql - Spring 应用程序启动验证具有错误数据库表的实体