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。