[英]Spring boot override prod properties from additional location file
在我的应用程序中,我有这些属性文件:
应用程序属性
application-prod.properties
在里面我有同样的财产
spring.datasource.password=my-dev-password #默认的
spring.datasource.password=${PROD_DATABASE_PASSWORD} #for prod 文件
在服务器上,我运行我的应用程序,如:
java -jar "myjar.jar" --spring.profiles.active=prod
到目前为止一切正常。
现在我想使用一个额外的文件来覆盖服务器上的相同属性,例如:
java -jar myjar.jar --spring.profiles.active=prod --spring.config.additional-location=file:/to/folder/application.properties
但它没有用!
我试图将它作为 java 属性传递,但它也不起作用!
java -Dspring.config.additional-location=file:/to/folder/application.properties -jar myjar.jar --spring.profiles.active=prod
我在这里错过了什么?
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
我正在使用 spring-boot 2.3.5
更新
当我只引用它的文件夹时:
--spring.config.additional-location=file:/to/folder/
我认为它只需要与spring.config.location
相反的文件夹,但是当我查看代码时,两者都在ConfigFileApplicationListener中加载了相同的代码:
private Set<String> getSearchLocations() {
Set<String> locations = getSearchLocations(CONFIG_ADDITIONAL_LOCATION_PROPERTY);
if (this.environment.containsProperty(CONFIG_LOCATION_PROPERTY)) {
locations.addAll(getSearchLocations(CONFIG_LOCATION_PROPERTY));
}
else {
locations.addAll(
asResolvedSet(ConfigFileApplicationListener.this.searchLocations, DEFAULT_SEARCH_LOCATIONS));
}
return locations;
}
试试这个。
$ java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
更详细地参考这个文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.