Spring Boot REST部署:我们需要TomCat吗?

时间:2019-05-21 18:49:13

标签: spring maven spring-boot jar spring-rest

我看过Spring Boot Rest项目,该项目生成WAR,然后将其部署在tomcat容器中。我想知道这是否是最佳实践,因为我已经在Spring Boot中读到了,新的最终可执行JAR文件也包含嵌入式服务器解决方案,例如Tomcat?

现在,我看过一篇有关Spring Boot的相关文章,都支持这两种方式,但都没有谈到每种方式的利弊。

有人可以指出部署Spring Boot Rest项目的最佳实践吗?

我正在考虑将包含嵌入式服务器的JAR码头化,但是我想知道将WAR部署到Tomcat是否有任何弊端?

1 个答案:

答案 0 :(得分:0)

关于应用程序环境和依赖项的一般最佳实践(来自12 Factor App)是“显式声明和隔离依赖项”。

  

一个十二因素应用程序从不依赖于系统范围内的隐式存在   包

考虑到这一点,人们应该更倾向于将嵌入式容器用作显式依赖的一部分,而不是需要单独满足的要求。jar工件中的嵌入式容器有多种选择(例如tomcat,jetty,undertow, netty)及其各自的配置也很广泛,因此建议在生产环境中使用它们(我已经使用了很多)。但是有时可能需要创建战争,例如,战争文件将可部署在环境可能要求的任何成熟的EE应用程序服务器(Weblogic,Wildfly等)中。一场战争使您在应用服务器方面的选择数量增加。就我个人而言,带有嵌入式tomcat的弹簧靴子非常有效。使用嵌入式容器选项,您需要的是一台安装了OS和Java的虚拟机,您可以使用。

但是,Spring Boot文档中的here中有一个与JSP相关的特殊限制,它解释了为什么您可能需要打包为war但仍以jar运行的一个很好的理由。