」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用環境變數或設定檔動態管理 Spring Boot 應用程式中的資料庫連線設定?

如何使用環境變數或設定檔動態管理 Spring Boot 應用程式中的資料庫連線設定?

發佈於2024-12-22
瀏覽:388

How Can I Dynamically Manage Database Connection Settings in My Spring Boot Application Using Environment Variables or Profiles?

在Spring Boot應用程式中使用環境變數.properties

在Spring Boot應用程式中,可能存在需要進行資料庫連線設定的情況跨不同環境(例如本地、測試和生產)的動態。一種方法是利用環境變數並將它們包含在 application.properties 檔案中。

要為不同的環境設定環境變量,請按照下列步驟操作:

  • 建立系統環境變數: 在本機電腦與Jenkins VM 中建立與OpenShift 使用的名稱相同的系統環境變數。為每個環境的這些變數分配適當的值。
  • 將環境變量轉換為Java 變量: 使用System.getenv() 存取這些環境變量並將它們轉換為Java 變量,如密碼、使用者名稱、 sqlURL 和sqlPort.
  • 在application.properties 中包含環境變數: 在application.properties中使用這些變數文件,包括它們如下:
spring.datasource.url = ${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/"nameofDB"
spring.datasource.username = ${OPENSHIFT_MYSQL_DB_USERNAME}
spring.datasource.password = ${OPENSHIFT_MYSQL_DB_PASSWORD}

然而,更優選的方法是使用 Spring 的設定檔機制並為每個環境建立單獨的應用程式屬性檔。使用 spring.profiles.active 屬性,您可以指定哪個設定檔應處於活動狀態,Spring 將自動載入對應的屬性檔。

這消除了明確環境變數轉換的需要,並更有效地管理設定檔。

最新教學 更多>
  • 如何使用類型特徵來確定類型是 STL 容器還是向量?
    如何使用類型特徵來確定類型是 STL 容器還是向量?
    檢測具有類型特徵的STL 結構:is_container 和is_vector 指南簡介特徵提供了一種在編譯時查詢類型的強大機制。這使程式設計師能夠編寫高度優化且靈活的程式碼。一個常見的用例是檢測 STL 結構,例如向量、集合和映射。 定義 is_vector要確定型別是否表示向量,我們可以使用Bo...
    程式設計 發佈於2024-12-22
  • 如何在 JavaScript 中實現真正的「睡眠」功能?
    如何在 JavaScript 中實現真正的「睡眠」功能?
    在 JavaScript 中尋找真正的睡眠:時間操縱的演變在程式設計領域,引入人為延遲的追求經常被忽視。依賴「睡眠」的概念。對於 JavaScript,模擬此功能的追求催生了多種方法。一個這樣的解決方案,pausecomp 函數,採用基本的方法來模擬睡眠。然而,隨著技術的進步,可用的解決方案也不斷進...
    程式設計 發佈於2024-12-22
  • 如何使用 Java 泛型組合類別和介面約束?
    如何使用 Java 泛型組合類別和介面約束?
    具有類別和介面相容性的 Java 泛型在 Java 中,建立具有特定約束的類別物件可能具有挑戰性。常見的場景是定義一個類別對象,該類別對象擴展特定類,同時實作特定介面。然而,使用泛型同時實現這兩個約束一直是一個常見的爭論點。 嘗試使用下列語法強制類別擴充ClassA 並實作介面InterfaceB:...
    程式設計 發佈於2024-12-22
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-12-22
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-22
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-22
  • Go處理資料後如何有效率地釋放記憶體?
    Go處理資料後如何有效率地釋放記憶體?
    查詢Go中的內存釋放原問題:如何釋放未使用的內存,特別是變量佔用的內存,處理後釋放嗎? 詳細說明:功能getURL 下載 20MB 以下的文件,並將其內容儲存在名為 body 的位元組中。雖然功能正常,但這會累積記憶體使用量。目標是在處理完 body 後釋放這塊記憶體。 綜合回應:Go 中的記憶體管...
    程式設計 發佈於2024-12-22
  • 為什麼切換到 JDK 10 後 Eclipse 找不到我的 XML 類別?
    為什麼切換到 JDK 10 後 Eclipse 找不到我的 XML 類別?
    Eclipse 無法定位JDK 10 建置路徑轉換後的XML 類別:解決方案嘗試將Maven 專案的建置路徑切換到JDK 10時在Eclipse 中,使用者可能會遇到Eclipse 建置過程無法找到XML 相關類別(包括javax.xml.xpath.XPath)的問題, org.w3c.dom.D...
    程式設計 發佈於2024-12-22
  • 如何在 JSON 中序列化 Python 日期時間物件?
    如何在 JSON 中序列化 Python 日期時間物件?
    日期時間物件的JSON 序列化當嘗試使用jsonify() 函數將包含日期時間物件的Python 字典轉換為JSON 時,您可以遇到錯誤「datetime.datetime 不可JSON 序列化」。出現此錯誤的原因是 JSON 本身不支援日期時間物件。 要解決此問題並成功序列化字典,您可以使用 js...
    程式設計 發佈於2024-12-22
  • 如何避免 C++ 類別方法中的隱藏變數?
    如何避免 C++ 類別方法中的隱藏變數?
    C 中的陰影變數 在類別中定義變數時,C 允許在不同作用域中使用具有相同名稱的變數。這種現象稱為“影子變數”,可能會導致混亂和意外行為。 在給定的類別定義中:class Measure { int N; double measure_set[]; char nomefile[]; double T;...
    程式設計 發佈於2024-12-22
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-22
  • 如何將 Bootstrap 輪播標題垂直居中並稍微向左放置?
    如何將 Bootstrap 輪播標題垂直居中並稍微向左放置?
    垂直對齊Bootstrap 輪播標題要讓輪播標題垂直居中並將其稍微向左放置,您可以利用CSS 屬性的變換翻譯Y function.HTML:<!-- start JumboCarousel --> <div id="jumboCarousel" class=&q...
    程式設計 發佈於2024-12-22
  • CommandType.StoredProcedure 或 CommandType.Text:何時應在 C# 中使用每個預存程序?
    CommandType.StoredProcedure 或 CommandType.Text:何時應在 C# 中使用每個預存程序?
    CommandType.StoredProcedure 與CommandType.Text 儲存程序在C# 中執行儲存程序時,開發人員可能會想知道以下:使用優點CommandType.StoredProcedure 與CommandType.Text。本文探討了差異並提供了有關何時使用每種方法的見解...
    程式設計 發佈於2024-12-22
  • 如何在 Apache FOP 產生的 PDF 中使用 SimSun 顯示漢字?
    如何在 Apache FOP 產生的 PDF 中使用 SimSun 顯示漢字?
    Apache FOP 使用SimSun 顯示漢字很多用戶都遇到過漢字顯示為“####”的問題使用Apache FOP 產生的PDF 文件。解決這個問題涉及三個步驟。 首先,需要在 FO 檔案中指定所需的字體系列。預設情況下,FOP 使用 Helvetica 字體,該字體可能不支援中文字元。要指定不同...
    程式設計 發佈於2024-12-22
  • 如何從 MySQL 日期時間欄位中減去小時?
    如何從 MySQL 日期時間欄位中減去小時?
    在MySQL 中從日期時間減去小時數由於GMT 問題,您想要從日期時間字段中減去3 小時。實現此目的的一種方法是使用 DATE_SUB() MySQL 函數。 解決方案:SELECT DATE_SUB(column, INTERVAL 3 HOUR)....解決方案:SELECT DATE_SUB(...
    程式設計 發佈於2024-12-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3