Справочный файл свойств Spring с использованием пути относительно файла конфигурации
Я перемещаю свойства из моего конфигурационного файла Spring в отдельный файл свойств. Это входит в конфигурационный файл с
<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location" value="file:properties/${CONFIG_MODE}/service.properties" />
</bean>
В соответствии с этим местоположение файла свойств относится к текущему рабочему каталогу серверного процесса.
Это создает требование о том, что процесс должен запускаться из определенного рабочего каталога, а еще хуже позволяет (по общему признанию, отдаленному) возможность, что он может получить совершенно другой файл свойств - например, если он был запущен с работающим каталог установлен на более старую версию службы.
Я хотел бы ссылаться на файл свойств, используя путь относительно каталога, содержащего файл конфигурации.
Глядя на FileSystemResource, кажется createRelative может быть то, что мне нужно, но я не могу понять, как его использовать в конфигурационном файле.
Спасибо,
Стив
Ответы
Ответ 1
Я не знаю, как это сделать.
Однако вы можете загрузить файл свойств из пути к классам:
<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location" value="classpath:path/to/service.properties" />
</bean>
Расположение пути к папке вашего файла свойств является гораздо более предсказуемой ситуацией, и оно будет работать до тех пор, пока ваш путь к классам настроен правильно.
Ответ 2
Используя 3.1, вы можете сохранить файлы с пути к классам, если хотите.
С помощью следующего определения bean
<bean class=
"org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location"
value="file:${props.path}/service.properties" />
</bean>
вы можете установить свойство с помощью командной строки java
java ... -Dprops.path=path/to/where/it/is
Ответ 3
Предположим, что вы разместили файл config.properties внутри WEB-INF
Тогда:
<bean id="propertyConfigurerInternal"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:../config.properties</value>
</property>