У меня есть несколько файлов свойств, которые я хочу загрузить из classpath. В разделе /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 должна находиться в пути к классам. Но это не ясно из документа, если он будет только отменять applicaiton.properties
оттуда или все свойства в config.
Когда я его протестировал, будет получен только application.properties
, а остальные свойства по-прежнему будут получены из /src/main/resources
. Я попытался предоставить их как список, разделенный запятыми, на spring.config.location
, но набор по умолчанию все еще не переоценивается.
Как сделать mulitiple внешние файлы конфигурации переопределить стандартные?
В качестве обходного пути я в настоящее время использовал app.config.location
(свойство приложения), которое я предоставляю через командную строку. iee
java -jar myapp.jar app.config.location=file:./config
и я изменил свой applicationcontext
на
<util:properties id="Job2Props"
location="{app.config.location}/job2.properties"></util:properties>
И вот как я делаю разделение между файлом и classpath во время загрузки приложения.
редактирует:
//psuedo code
if (StringUtils.isBlank(app.config.location)) {
System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}
Мне бы очень хотелось не использовать вышеупомянутое обходное решение и spring переопределить все внешние файлы конфигурации в пути к классам, как это делается для файла application.properties
.