我有多个要从类路径加载的属性文件。有一个默认设置,/src/main/resources它是的一部分myapp.jar。我springcontext希望文件位于类路径中。即
<util:properties id="Job1Props"
location="classpath:job1.properties"></util:properties>
<util:properties id="Job2Props"
location="classpath:job2.properties"></util:properties>
我还需要使用外部集覆盖这些属性的选项。我在中有一个外部配置文件夹cwd。按照spring boot doc config文件夹应该在classpath上。但是从doc尚不清楚,它是否只会覆盖applicaiton.propertiesfrom或配置中的所有属性。
当我测试它时,只会application.properties被拾取,其余属性仍会从中拾取/src/main/resources。我尝试将它们作为逗号分隔的列表提供,spring.config.location但默认设置仍未被覆盖。
如何使多个外部配置文件覆盖默认文件?
解决方法是,我目前使用app.config.location通过命令行提供的(特定于应用程序的属性)。即
java -jar myapp.jar app.config.location=file:./config
我改变了我的applicationcontext给
<util:properties id="Job2Props"
location="{app.config.location}/job2.properties"></util:properties>
这就是我在加载应用程序时如何在文件和类路径之间进行分隔的方法。
编辑:
//psuedo code
if (StringUtils.isBlank(app.config.location)) {
System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}
我真的不希望使用上述变通方法,并且让spring像在application.properties文件路径上那样覆盖classpath上的所有外部配置文件。