我是Springboot的新手,我在外部化我的属性文件方面遇到了困难。我有多个".properties“文件,保存在子目录"config/”中。我已经从我的项目中删除了上下文占位符,并在执行jar时包含了逗号分隔的属性文件。
例如:爪哇--spring.config.location=file:////config/PROP1.properties,file:///config/PROP2.properties -jar myjar.jar -debug
我有几个问题
更新
现在,我只保留一个属性文件,假设jar外部的ABC.properties位于同一个目录中。我用的是"ABC“而不是”应用程序“。我正在使用以下命令
Java-Dserver.log.dir=/path/to/log/dir -jar myjar.jar -server.port=9090-Spring.config.name=ABC-pro1=val1
我在我的外部属性文件中覆盖了一个属性,但是在运行应用程序时没有看到使用overriden值。我的新问题是
发布于 2021-07-03 11:16:59
Spring引导明确指示如何编写此外部配置。参见这里的参考文件:https://docs.spring.io/spring-boot/docs/2.5.2/reference/htmlsingle/#features.external-config.files
基本上,您需要这样指定位置:
从您的命令行来看,您似乎缺少了一个破折号,而且还使用了错误的文件模式格式。
发布于 2021-07-04 16:31:59
Q1:为什么配置目录中的文件即使在显式地提到要查看的位置之后也不被读取?
A1:如果您的配置文件夹位于jar文件旁边,您的命令应该如下所示
java -jar myjar.jar --spring.config.location=file:./config/PROP1.properties同时,您也可以使用完整的路径来锁定配置文件。
Q2:如果我没有显式地将属性文件名作为参数来提出来,那么即使在配置目录中,它们也不会被选中。
A2:不。请参阅这位医生,Spring将尝试从以下四个位置查找配置文件:
如果spring.config.location是not set,那么这些名为application.properties的文件夹中的文件将被视为有效的配置文件。可以通过设置属性spring.config.name来更改已接受的文件名。
关于Config文件优先级的Q3
如前面提到的A3中所述,如果相同的名称属性出现在不同的配置文件中,则列表中较高的位置将覆盖较低的项。
另一个提示,最好是删除jar文件中的配置文件,这样您就可以在一个地方(外部化的配置文件夹)获得配置的完整视图;
https://stackoverflow.com/questions/68233843
复制相似问题