Spring启动外部application.properties

我正在开发一个spring boot应用程序

我想用外部文件覆盖src/main/resources/application.properties一些属性(例如/etc/projectName/application.properties )。

我尝试了几种方法:

  1. @PropertySource("file:/etc/projectName/application.properties")作为ApplicationConfig.java注释

  2. 我的application.properties resources spring.config.location=/etc/projectName/application.properties

我用spring.port测试了它。 第一种方法只添加了属性,但没有覆盖它们。

我总是在文档中指定的命令行中使用--spring.config.location= ,你可以在其中放入各种文件,一个是默认值,另一个是重写文件。

编辑:
或者,您也可以使用以下内容:

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

并在application.properties中指定external.config
这将提供覆盖配置的默认路径,通过在命令行中指定--external.config ,它仍然可以覆盖。
我使用${external.config}定义为系统env变量,但它也应该与application.properties变量一起使用。