我有多个要从类路径加载的属性文件。在 /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 启动 doc 配置文件夹应该在类路径上。但是,doc 并不清楚它是否只会从那里覆盖 application.properties
或者在 config 中覆盖所有属性。
当我测试它时,只有 application.properties
被拾取,其余的属性仍然从 /src/main/resources
被拾取。我已经尝试将它们作为逗号分隔的列表提供给 spring.config.location
,但是仍然没有覆盖默认设置。
如何使多个外部配置文件覆盖默认配置文件?
作为解决方案,我目前使用的 app.config.location
(应用程序特定属性) ,我通过命令行提供
java -jar myapp.jar app.config.location=file:./config
我把 applicationcontext
改成了
< util: properties id = “ Job1Props” Location = “{ app.config.location }/job1.properties”>
<util:properties id="Job2Props"
location="{app.config.location}/job2.properties"></util:properties>
这就是我在加载 Application 时如何在文件和类路径之间进行分离的方法。
编辑:
//pseudo code
if (StringUtils.isBlank(app.config.location)) {
System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}
我真的不想使用上面的解决方案,并让 Spring 覆盖类路径上的所有外部配置文件,就像它覆盖 application.properties
文件一样。