Spring MVC不是Jax RS complient:它有风险吗?

时间:2016-11-12 11:09:01

标签: java rest spring-mvc

我阅读了很多关于Jersey和Spring MVC的帖子。 有一点似乎很有趣: Jersey遵循Jax RS标准,而Spring MVC则没有。

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

问候。

1 个答案:

答案 0 :(得分:1)

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

正如有人正确评论的那样,采用JAX-RS并不是一个优势。只有周围的系统也是JEE,例如,如果您计划无处不在地使用CDI。

另一方面,如果你在相邻系统中安装了Spring,那么你显然也会选择Spring作为REST部分。

如果这个REST应用程序是唯一的,并且没有相邻的系统可以存在,那么两种选择都很好,并且没有理由支持其中一种。我仍然选择Spring,因为它的生态系统更丰富,发展得更快,但这只是我的观点。

JAX-RS具有容器本机支持的优势,因此生成的应用程序将更小,因为它需要更少的依赖项。这在理论上是一件好事,但历史上切换JEE服务器一直存在问题,因为专有配置的差异(如何定义数据源?),提供库版本(服务器为您提供哪种JAX-RS实现?版本?如果您编写的服务器版本比服务器更新版本怎么办?)和类加载策略(如果您在应用程序中打包一个较新的lib版本,哪个版本首先加载,何时加载?)。虽然Spring应用程序更大,因为它们需要包含Springs库,但它们对上述问题更具弹性,你可以做所有事情 Spring方式,因此下面的服务器不那么有趣。这听起来很愚蠢,但标准的东西通常比非标准的东西更难。这当然只是我自己的经历,有人会肯定地与另一个人相遇。