[英]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.