Spring Cloud連接器和Heroku

1.概述

在本文中,我們將介紹使用Spring Cloud Connectors在Heroku上設置Spring Boot應用程序。

Heroku是一項提供託管Web服務的服務。而且,它們提供了大量的第三方服務,稱為附加組件,它們提供從系統監視到數據庫存儲的所有內容。

除了所有這些,他們還有一個定制的CI / CD管道,該管道無縫集成到Git中,從而加快了開發到生產的速度。

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 App

接下來,讓我們使用Heroku CLI在我們的帳戶上配置Web服務器。

首先,我們需要驗證我們的Heroku帳戶。從命令行運行heroku login然後按照說明登錄並創建SSH密鑰。

接下來,運行heroku create 。這將提供Web服務器並添加一個遠程存儲庫,我們可以將其代碼推送到該存儲庫以進行部署。我們還將在控制台中看到一個域,複製該域,以便以後可以訪問它。

4.3。將代碼推送到Heroku

現在,我們將使用git將代碼推送到新的Heroku存儲庫。

運行命令git push heroku master將我們的代碼發送到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數據庫,請運行以下命令heroku addons:create heroku-postgresql:hobby-dev

這將為我們的Web服務器提供一個數據庫,並添加一個提供連接信息的環境變量。

假設Spring可以檢測到我們要使用PostgreSQL ,則將Spring Cloud Connector配置為檢測此變量並自動設置數據源

為了讓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 ,因此我們將max設置為10。此外,我們將hibernate.ddl屬性設置為create,以便可以自動創建書表。

最後,提交這些更改並運行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上閱讀更多內容

與往常一樣,可以在GitHub上找到代碼段。