讀古今文學網 > Spring Boot實戰 > 8.1 衡量多種部署方式 >

8.1 衡量多種部署方式

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。