我想构建一个非常小的自包含微服务,为一些存储数据的REST操作提供内存(不需要持久性)。
因此,我正在寻找最轻量级方法的框架。在研究了可用的JAX-RS实现后,Restlet似乎是一个不错的选择。
还建议使用Spring引导,注释不需要JAX-RS。我有点困惑。 JAX-RS不是Java REST应用程序的标准吗?我不需要将Spring Boot与JAX-RS结合起来吗?
答案 0 :(得分:7)
它们是完全不同的野兽,它们都可以以自己的方式对你有用。
我会解释:
Spring启动完美支持Rest服务。 Spring引导闪耀,因为你可以用5-6行代码创建一个休息服务。
Spring boot:
处理Web容器(它嵌入了tomcat / jetty,但您也可以选择在外部部署战争)
处理所有依赖项(版本合规性,因此强制使用)。它还意味着JSON操作框架,而不仅仅是声明REST端点的方式。 Spring boot默认使用Jackson。
处理所有包装所有麻烦。如果你使用WAR它可能不那么有趣(当然,在这种情况下,你将不得不考虑web容器和spring boot为你做的)。但是你使用Jars - spring boot会创建一个可以加载java -jar <youjar>
的大jar。
可选择为您的应用程序提供指标和JMX内容 - 只需声明执行器上的maven / gradle依赖关系,您就可以开始使用了。
所有这些使弹簧靴非常适合开发可能属于您的自包含微服务。
相反如果您正在寻找框架来为现有解决方案提供休息,那么您可能不会使用spring boot。也许你根本不使用春天,谁知道?
所以我想说,Jersey / Restlet等只是用于在Java中更轻松地开发REST服务的Web框架。 Spring boot更多的是管理你的应用程序,当然它也提供了一种使用REST服务的方式,就像它提供了一种使用JDBC,Servlet API等的方式。
希望这有帮助
答案 1 :(得分:0)
JAX-RS是Java EE规范的一部分,也是实现Java EE规范的应用程序服务器的标准REST API。每个应用程序服务器通常都带有它自己的实现,让它成为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以及自动配置,以最大限度地减少您自己的配置工作。