如何正确覆盖 Spring 中的内部配置文件



我有一个内部 application.yml 配置文件,位于类路径上的资源文件夹中。

我有一个外部配置文件:/home/username/config.properties,它覆盖了一些字段以在服务器上下文中运行。

我希望外部配置文件中的字段覆盖内部文件,如果未在外部文件中定义,则保留内部文件中的字段。

答案建议 Spring - 如何用外部文件覆盖内部配置文件不起作用。

例如,以下命令对我不起作用:

java -jar application.jar --spring.config.location=classpath:/,file:///home/minister/config.properties

我如何实现这个预期的结果?

编辑:此问题仅发生在Linux上。当我在 Windows 10 计算机上使用覆盖的配置文件运行它时,它可以正常工作。

看起来你的/太多了,试试:

java -jar application.jar --spring.config.location=classpath:/,file:/home/minister/config.properties

您可以传递相对于.jar文件的路径,例如,

java -jar application.jar -Dspring.config.location=./config/application.properties

java -jar application.jar -Dspring.config.location=../common/config

这两种方法都有效。请参考 - Spring 文档,了解有关外部化配置如何工作的更多详细信息。

希望这有帮助。