簡體   English   中英

jar外部的Spring Boot外部屬性

[英]Spring Boot External properties outside of jar

我正在創建一個Spring Boot應用程序,我遇到了這個問題。
我將我的application.properties在資源文件夾中,但我還需要jar外部的external.properties文件來配置諸如以下屬性:
名稱,
密碼,
等等
我想在jar外部和resources文件夾中擁有external.properties文件,以便在開發時進行測試。
我試過像這樣創建配置文件:

@Configuration
 @PropertySource("classpath:" + SpringConfiguration.EXTERNALIZED_PROPERTIES)
 @PropertySource(value = "file:./" + 
 SpringConfiguration.EXTERNALIZED_PROPERTIES, ignoreResourceNotFound = true)
 public class SpringConfiguration {
       static final String EXTERNALIZED_PROPERTIES = "external.properties";
 }

但是它仍然從資源文件夾讀取屬性。 我怎樣才能從罐子外面讀取它?

嘗試將絕對系統路徑指定為file:屬性的值。

可選地,我建議先將絕對路徑設置為ENV變量,然后在file:使用該變量:

@PropertySource("file:${EXTERNAL_RESOURCE_DIR}/application.properties") 

這樣,當該目錄更改時,您無需更改代碼。

如果您需要不同的開發和生產道具,請使用application-dev.properties和application-prod.properties並在啟動時設置適當的spring配置文件。 如果您需要覆蓋jar中的任何屬性,只需在啟動命令中添加-Dmyproperty=myvalue

Maciej Kowalski的類似答案。

@PropertySources({
@PropertySource(value = {"classpath:application.properties"}, ignoreResourceNotFound = true),
@PropertySource(value = {"file:${external.config.location}/application.properties"}, ignoreResourceNotFound = true)

})

假設在文件夾“ / home / me / configs ”中,您具有“ application.properties ”文件。

使用自定義文件夾運行應用程序:

java -jar app.jar --external.config.location="/home/me/configs"

要么

java -jar app.jar --external.config.location="C:\\users\\your_user\\configs"

另外,您可以將其導出為環境變量(unix)

export JAVA_OPTS='-Dexternal_config_location=/home/me/configs'

如果需要添加外部屬性,則只能在application.properties指定。

例如: myapplication.username='john'

從Spring引導代碼中,您可以像這樣訪問它:

 @Autowired  
 private Environment env;

//To access it
 String username = env.getProperty("myapplication.username");  

要么

@Value("$myapplication.username")

如果您的要求是您所提到的,我認為不需要外部文件。

解決的辦法是刪除external.properties和配置文件。 而不是使用它,而是將所有屬性放到application.properties中。 並將application.properties放入jar文件夾。 Spring會自動將這個屬性文件的優先級設置為高於jar中的屬性文件的優先級。

暫無
暫無

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

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