簡體   English   中英

Spring FAT 外的引導屬性 JAR

[英]Spring Boot Properties Outside FAT JAR

我正在開發一個項目並且有一個用例,我需要為 Spring 從JAR外部啟動提供application.properties文件。

根據Baeldung的說法,獲取 application.properties 的優先順序是

  1. 當前目錄的 /config 子目錄
  2. 當前目錄
  3. 類路徑 /config package
  4. 類路徑根

前兩個的問題是我需要導航到包含配置的目錄才能運行 JAR。 在本地工作時聽起來沒有問題,但在通過 CI/CD 框架部署在遠程主機上時,這不是一個可行的解決方案。

我正在嘗試使用類路徑找到一種機制,並避免使用此處提到的 spring 引導的命令行選項或設置環境變量。

我無法弄清楚如何在運行 FAT JAR 時設置類路徑並一起指定配置。 如果可以的話,請幫我弄清楚!

提前致謝:)

編輯:我知道有一些方法可以使用 Spring Boot 的命令行選項來實現這一點,例如 spring.config 或 loader.path 等。

我試圖找到一個基於類路徑和目錄結構的更隱含的解決方案,只是為了減少它與正在使用 Spring 引導這一事實的耦合。

根據Spring 文檔,您可以使用spring.config.location屬性定義外部配置位置。 進一步來說:

如果spring.config.location包含目錄(而不是文件),它們應該以 / 結尾(並且,在運行時,在加載之前附加從spring.config.name生成的名稱,包括特定於配置文件的文件名)。 spring.config.location中指定的文件按原樣使用,不支持特定於配置文件的變體,並被任何特定於配置文件的屬性覆蓋。

配置位置以相反的順序搜索。 默認情況下,配置的位置是:

classpath:/,classpath:/config/,file:./,file:./config/.

生成的搜索順序如下:

file:./config/ file:./ classpath:/config/ classpath:/

當使用spring.config.location配置自定義配置位置時,它們會替換默認位置。 例如,如果spring.config.location配置為

classpath:/custom-config/,file:./custom-config/搜索順序變成如下:

file:./custom-config/ classpath:custom-config/

或者,當使用spring.config.additional-location配置自定義配置位置時,除了默認位置之外,還會使用它們。 在默認位置之前搜索其他位置。 例如,如果配置了classpath:/custom-config/,file:./custom-config/的附加位置,則搜索順序如下:

file:./custom-config/ classpath:custom-config/ file:./config/ file:./ classpath:/config/ classpath:/

包含您的外部配置的目錄的示例用法如下所示:

java -jar myproject.jar --spring.config.location=file:/custom-config-dir/

或者直接到外部配置文件:

java -jar myproject.jar --spring.config.location=file:/custom-config-dir/custom-config.properties

將自定義配置位置指定為 VM 參數是另一種選擇。

java -Dspring.config.location=<config-dir-path> -jar demo.jar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM