1. 概述
本文將介紹如何使用 Spring Cloud Connectors 在 Heroku 上設置 Spring Boot 應用程序。
Heroku 是一家提供 Web 服務託管服務的平台。 此外,它還提供大量第三方服務,稱為 Add-ons,涵蓋從系統監控到數據庫存儲等各個方面。
除了以上功能,Heroku 還提供與 Git 無縫集成的自定義 CI/CD 管道,從而加速開發流程。
Spring 通過其 Spring Cloud Connectors 庫支持 Heroku。 我們將使用它來自動配置應用程序中的 PostgreSQL 數據源。
現在,讓我們開始編寫應用程序。
2. Spring Boot Book 服務
首先,讓我們創建一個簡單的 Spring Boot 服務。
3. 註冊 Heroku 賬號
現在,我們需要註冊一個 Heroku 賬號。請前往 heroku.com,並在頁面右上角點擊註冊按鈕。
現在我們已經擁有一個賬號,接下來需要獲取 CLI 工具。請導航至 heroku-cli 安裝頁面,並安裝該軟件。這將為我們提供完成本教程所需的工具。
4. 創建 Heroku 應用
現在我們已經有了 Heroku CLI,讓我們回到我們的應用。
4.1. 初始化 Git 倉庫
使用 Git 作為我們的版本控制系統,可以使 Heroku 運行效果最佳。
首先,前往應用程序的根目錄,即與我們的 pom.xml 文件相同的目錄,然後運行命令 git init 創建 Git 倉庫。 接下來,運行 git add . 和 git commit -m “first commit”。
現在,我們的應用程序已保存到本地 Git 倉庫中。
4.2. 在 Heroku 上部署 Web 應用
接下來,我們使用 Heroku CLI 在我們的賬户上部署一個 Web 服務器。
首先,我們需要認證我們的 Heroku 賬户。 運行命令 heroku login ,然後按照登錄並創建 SSH 密鑰的説明進行操作。
然後,運行 heroku create。 這將部署 Web 服務器,並添加一個遠程倉庫,以便我們可以將代碼推送到其中進行部署。 此外,我們還會看到一個域名打印在控制枱中,請複製該域名以便稍後訪問。
4.3. 將代碼推送到 Heroku
現在我們將使用 Git 將我們的代碼推送到新的 Heroku 存儲庫。
運行命令 <em >git push heroku master</em> 將我們的代碼發送到 Heroku。
在控制枱輸出中,我們應該看到指示上傳成功的日誌,然後他們的系統將下載任何依賴項、構建我們的應用程序、運行測試(如果存在)以及如果一切順利則部署應用程序。
這就是全部——我們現在已將應用程序成功部署到 Web 服務器。
5. 在 Heroku 上進行內存測試
讓我們確保我們的應用程序正常工作。使用我們在創建步驟中創建的域名,讓我們測試我們的實時應用程序。
讓我們發出一些 HTTP 請求:
POST https://{heroku-domain}/books HTTP
{"author":"baeldung","title":"Spring Boot on Heroku"}我們應該回溯:
{
"title": "Spring Boot on Heroku",
"author": "baeldung"
}現在讓我們嘗試讀取我們剛剛創建的這個對象:
GET https://{heroku-domain}/books/1 HTTP這應該返回:
{
"id": 1,
"title": "Spring Boot on Heroku",
"author": "baeldung"
}一切看起來都很好,但在生產環境中,我們應該使用持久數據存儲。
讓我們來演示如何配置 PostgreSQL 數據庫並配置我們的 Spring 應用使用它。
6. 添加 PostgreSQL
要添加 PostgreSQL 數據庫,請運行以下命令:<em >heroku addons:create heroku-postgresql:hobby-dev</em >
這將為我們的 Web 服務器配置一個數據庫,並添加一個環境變量,其中包含連接信息。
<strong >Spring Cloud Connector 會自動檢測此變量並設置數據源</strong >,因為 Spring 可以檢測到我們想要使用 PostgreSQL。
為了讓 Spring Boot 知道我們正在使用 PostgreSQL,我們需要進行兩個更改。
首先,我們需要添加一個依賴項以包含 PostgreSQL 驅動程序:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.10</version>
</dependency>接下來,讓我們添加屬性,以便 Spring Data Connectors 可以根據其可用資源配置數據庫。
在 src/main/resources 中創建一個 application.properties 文件並添加以下屬性:
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true
spring.jpa.hibernate.ddl-auto=create這將彙集我們的數據庫連接,並限制應用程序的連接數。 Heroku 在開發環境數據庫中限制活躍連接數為 10,因此我們將其設置為 10。 此外,我們設置了 hibernate.ddl 屬性,以便自動創建我們的圖書表。
最後,提交這些更改並運行 git push heroku master。 這會將這些更改推送到我們的 Heroku 應用程序。 在我們的應用程序啓動後,請嘗試從上一部分運行測試。
最後我們需要更改 ddl 設置。 讓我們更新該值:
spring.jpa.hibernate.ddl-auto=update這將指示應用程序在修改實體時,應用程序重啓時更新模式。 就像之前一樣,提交併推送此更改,以便將更改推送到我們的 Heroku 應用程序。
我們不需要為這些內容編寫自定義數據源集成。 這是因為 Spring Cloud Connectors 檢測到我們正在使用 Heroku 並且使用 PostgreSQL – 它會自動配置 Heroku 數據源。
5. 結論
我們現在已經在一個 Heroku 上運行的 Spring Boot 應用。
最重要的是,從一個想法到運行的應用程序的簡單性使 Heroku 成為一種可靠的部署方式。
要了解更多關於 Heroku 以及它提供的所有工具,請訪問 heroku.com。