我想创建新的 RESTful 应用程序。我对框架有点困惑,我可以用 spring+jersey 做到这一点,但我可以单独使用 jersey 做同样的应用程序吗?
SpringREST 和 jersey 之间的主要区别是什么?哪个更方便?为什么?
2 回答
我已经使用了这两个框架。Spring 是一个大型框架/API,涵盖了许多领域,其中之一是休息服务。另一方面,泽西岛只是涵盖休息。它是 JAX-RS API (JSR 311 & JSR 339) 的参考实现。
这基本上是在 Java 中进行休息的“标准”方式。还有其他实现,例如 RestEasy。从理论上讲,您的代码只需要引用通用 JAX-RS 接口,这意味着您应该能够在以后根据需要切换到不同的实现。这显然只有在您不依赖不属于 JAX-RS 标准的定制功能时才有效。
如果您要使用泽西岛,您可能仍然决定要春天。它仅对它的依赖注入很有用。在这种情况下,您可能有一个 JAX-RS 类处理休息请求,然后调用已注入的 spring 服务。这实际上是我编写 REST API 的方式。
是否应该使用 spring 编写其余服务或 JAX-RS 是主观的,完全取决于您。我个人使用标准的 JAX-RS API,因为我发现它更专注于休息。spring rest 方法基本上是 spring-mvc 的扩展,它最初是为 JSP 设计的。我发现使用 JAX-RS 比使用 spring-mvc 更容易处理错误。那就是说其他人可能会有所不同。另一个好处是遵循理论上的标准,如果您想切换到不同的提供商,您将来会有更大的灵活性。
主要区别在于 Jersey 是基于标准的,而 Spring MVC 不是,如果这对你很重要的话。两者都非常好。
我在 Jersey(我使用 1.x)中发现的主要优点是它可以自动使用 Jackson JSON Views,而 Spring MVC 不能。此外,Spring MVC 中的错误处理有点烦人,因为错误页面默认为标准 HTML。
您还没有列出另一个项目,那就是 Spring Data + Spring HATEOAS,它较新,但看起来还不错。