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