Spring 简单微服务的引导与 JAX-RS (Restlet)

Spring Boot vs. JAX-RS (Restlet) for dead simple microservice

我想构建一个非常小的独立微服务,服务于一些将数据存储在内存中的 REST 操作(不需要持久性)。

因此,我正在寻找框架方面的最轻量级方法。在研究了可用的 JAX-RS 实现后,Restlet 似乎是一个不错的选择。

还获得了 Spring 推荐的引导,其中包含您不需要 JAX-RS 的注释。我有点糊涂了。 JAX-RS 不是 Java REST 应用程序的标准吗?我不需要将 Spring Boot 与 JAX-RS 结合使用吗?

它们是完全不同的野兽,它们都可以以自己的方式对您有用。

我来解释一下:

  • Spring Boot完美支持Rest服务
  • Spring Boot 大放异彩,因为您可以在 5-6 行代码中按字面意思创建一个休息服务。

Spring 启动将:

  • 处理 Web 容器(它嵌入了 Tomcat/Jetty,尽管您也可以选择在外部部署 war)

  • 处理所有依赖项(版本合规性等)。它还意味着 JSON 操作框架,而不仅仅是声明 REST 端点的方式。 Spring Boot 默认使用 Jackson。

  • 处理打包所有东西的所有麻烦。如果您使用 WAR 它可能没那么有趣(当然,在这种情况下您将不得不考虑网络容器,而 Spring Boot 会为您完成)。但是你使用 Jars - spring 引导将创建一个大罐子,它可以用 java -jar <youjar>.

  • 加载
  • 可选地为您的应用程序提供指标和 JMX 内容 - 只需声明一个 Maven/Gradle 对执行器的依赖,您就可以开始了。

所有这些使得 Spring Boot 非常适合开发独立的微服务,这可能是您的情况。

相反,如果您正在寻找框架来为您现有的解决方案提供休息,那么您可能不会使用 Spring Boot.也许您根本没有使用 Spring,谁知道呢?

所以我想说,Jersey/Restlet 等等只是在 Java 中更容易开发 REST 服务的 Web 框架。 Spring Boot 更多的是关于管理您的应用程序,当然它也提供了一种使用 REST 服务的方式,就像它提供了一种使用 JDBC、Servlet API 等等的方式一样.

JAX-RS 是 Java EE 规范和应用程序服务器的标准 REST API 的一部分,它们实现了 Java EE 规范。每个应用程序服务器通常都有自己的实现,让它成为 Wildfly、Jersey、Wink 等的 RestEasy
这并不意味着每个支持 REST 的 Java 框架都必须实现 JAX-RS。也就是说,Restlet 不是 JAX-RS 实现,它是一个完全独立的框架(因为 Spring MVC 具有 REST 功能,Spring Boot 默认使用它)。

您还可以使用 JAX-RS for REST 开发 Spring Boot 应用程序,Spring Boot 为 Jersey 提供启动器 POM 以及自动配置以最大程度地减少您自己的配置工作。