我有多个属性文件要从类路径加载。在/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中不清楚它是否只会重写applicaiton.properties
或config中的所有属性。
当我测试它时,只有application.properties
被提取,其余属性仍然从/src/main/resources
中提取。我尝试将它们作为逗号分隔的列表提供给spring.config.location
,但默认设置仍未被覆盖。
如何使多个外部配置文件覆盖默认配置文件?
作为解决办法,我目前使用了app.config.location
(特定于应用程序的属性),它是通过命令行提供的。即
java -jar myapp.jar app.config.location=file:./config
并且我将applicationcontext
更改为
null
<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
文件所做的那样。
更新:因为spring.config.location的行为现在重写了默认值,而不是添加到默认值。您需要使用spring.config.addition-location
来保持默认值。这是从1.x到2.x的行为变化
使用spring boot时,属性按以下顺序加载(请参阅《spring boot参考指南》中的外部化配置)。
解析属性时(即@value(“${myprop}”)
以相反的顺序进行解析(所以以9开头)。
要添加不同的文件,可以使用spring.config.location
属性,它以逗号分隔属性文件或文件位置(目录)的列表。
-Dspring.config.location=your/config/dir/
上面的文件将添加一个目录,用于查看application.properties
文件。
-Dspring.config.location=classpath:job1.properties,classpath:job2.properties
这将把2属性文件添加到加载的文件中。
默认配置文件和位置加载在添加指定的spring.config.location
之前,这意味着后者将始终覆盖在前面的配置文件中设置的属性。(另见《spring boot参考指南》本节)。
如果spring.config.location
包含目录(而不是文件),它们应该以/结尾(并在加载之前附加从spring.config.name
生成的名称)。无论spring.config.location
的值如何,默认搜索路径classpath:,classpath:/config,file:,file:config/
始终使用。这样,您就可以在application.properties
(或使用spring.config.name
选择的任何其他basename)中为应用程序设置默认值,并在运行时用不同的文件重写它,保持默认值。
问题内容: 我有多个要从类路径加载的属性文件。有一个默认设置,它是的一部分。我springcontext希望文件位于类路径中。即 我还需要使用外部集覆盖这些属性的选项。我在中有一个外部配置文件夹cwd。按照文件夹应该在classpath上。但是从doc尚不清楚,它是否只会覆盖或配置中的所有属性。 当我对其进行测试时,只会拾取,其余属性仍会从拾取/src/main/resources。我尝试将它们作
在springboot应用程序中,我有一个jar,然后是一个子目录config with application。属性,applicationContext。xml和log4j。。。属性文件。 我正在尝试外部化log4j配置。application.properties是这样外部化的。 但是,当springboot运行时,它使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选
问题内容: 我正在开发Java桌面应用程序,并且想要一个外部configuration.xml。 我正在使用Netbeans开发应用程序,并尝试将config.xml文件添加到dist目录中,以使其驻留在应用程序工作文件夹中。但是,当Netbeans执行其清理操作时,它将删除dist目录, 我应该在何处放置此configuration.xml文件,以便它不会被删除并存在于应用程序启动目录中。 问题
我有一个启动应用程序,部署到一个外部tomcat服务器,一切工作在我的本地与本地数据库。现在,我必须将代码推广到数据库配置不同的更高环境。我读了很多关于配置文件的etc...,但是当它是一个外部tomcat并且不使用
寻找在Springboot应用程序中配置多个配置文件特定属性文件的最佳方法。下面是一个例子: -资源 · --application.properties · · · · · --德夫 --application-dev.properties --ldap-dev.properties --Quartz-Dev.Prope
本文向大家介绍SpringBoot内部外部配置文件加载顺序解析,包括了SpringBoot内部外部配置文件加载顺序解析的使用技巧和注意事项,需要的朋友参考一下 内部配置加载顺序 SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –cl