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上找到代碼段。