衡量多种部署方式
Spring Boot 应用程序有多种构建和运行方式,其中一些你已经使用过了。
-
在 IDE 中运行应用程序(涉及 Spring ToolSuite 或 IntelliJ IDEA)。
-
使用 Maven 的 spring-boot:run 或 Gradle 的 bootRun,在命令行里运行。
-
使用 Maven 或 Gradle 生成可运行的 JAR 文件,随后在命令行中运行。
-
使用 Spring Boot CLI 在命令行中运行 Groovy 脚本。
-
使用 Spring Boot CLI 来生成可运行的 JAR 文件,随后在命令行中运行。
这些选项每一个都适合运行正在开发的应用程序。但是,如果要将应用程序部署到生产环境或其他非开发环境中,又该怎么办呢?
虽然这些选项看起来没有一个能将应用部署于非开发环境,但事实上,它们之中只有一个选项不可用于生产环境——在IDE中运行应用显然不可取。可运行的JAR文件和Spring Boot CLI还是可以考虑的,两者还可以很好地将应用程序部署到云环境里。
也许你很想知道如何把Spring Boot应用程序部署到一个更加传统的应用服务器环境里,比如Tomcat、WebSphere或WebLogic。在这些情境中,可执行JAR文件和Groovy代码不适用。针对应用服务器的部署,你需要将应用程序打包成一个WAR文件。
实际上,Spring Boot应用程序可以用多种方式打包,详见表8-1。

如你所见,在做最终选择时需要考虑目标环境。如果要将应用程序部署到自己数据中心的Tomcat服务器上,WAR文件就是你的选择。另一方面,如果要部署到Cloud Foundry,可以使用表里列出的各种选项。
本章将关注以下选项。
-
向Java应用服务器里部署WAR文件。
-
向Cloud Foundry里部署可执行JAR文件。
-
向Heroku里部署可执行JAR文件(构建过程是由Heroku执行的)。
探索这些场景的时候,我们还要处理一件事。在开发应用程序时我们使用了嵌入式的H2数据库,现在得把它替换成生产环境所需的数据库了。
首先,让我们看看如何将阅读列表应用程序构建为WAR文件。这样才能把它部署到Java应用服务器里,比如Tomcat、WebSphere或WebLogic。