Не удается загрузить файл свойств в spring-context.xml. Путь к файлу свойства указывается как заполнитель в dev.properties
Я загружаю файл свойств в spring-context.xml и указываю расположение внешнего файла свойств в ${spring.profiles.active}.properties, который находится в classpath, и использую это местоположение в качестве плашхолдера в spring-context.xml. Мой spring-context.xml это:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations" ref="propertyConfigurerFiles" />
</bean>
<bean id="propertyConfigurerFiles" class="java.util.ArrayList">
<constructor-arg>
<list>
<value>/WEB-INF/properties/common.properties</value>
<!--In Developemnet Enviroenment it will be dev.properties-->
<value>/WEB-INF/properties/${spring.profiles.active}.properties</value>
<!--External Property File Location as a Placeholder-->
<value>${app.config.batch.location}</value>
</list>
</constructor-arg>
</bean>
И мои dev.properties это:
app.config.batch.location=E:/project/properties/config.properties
Моя проблема заключается в том, что ${app.config.batch.location} заполнитель не разрешен в spring-context.xml, и он пытается загрузить файл ${app.config.batch.location} вместо E: / project / properties /config.properties.
Надеюсь, я хорошо объяснил проблему. Пожалуйста помоги!
Заранее спасибо!!!
2 ответа
Кажется, вы используете профили Spring вместо того, чтобы возиться с привязкой значения свойства времени инициализации, что вы можете сделать, это...
1) прочитать файл свойств (профиль)
/WEB-INF/properties/$ndomspring.profiles.active}. Свойства 2) создать класс Java, который может читать эти значения свойств. (не забудьте использовать класс сопряжения пружинных профилей) 3) когда вы пытаетесь прочитать файл свойств, местоположение которого встроено в файл свойств (шаг-1), объект, созданный на шаге-2, даст значение для ключа <value>${app.config.batch.location}</value>
Теперь вы можете загрузить этот файл свойств, используя класс чтения файлов.
4) создать Properties
объект и доступ к значениям в нем.
Примечание:: если какая-либо инициализация вашего компонента зависит от значения ключа, прочитанного на шаге 4, выполните инициализацию вручную или создайте свой *** пользовательский класс (сервлет), который загружается перед любым другим классом (даже DispactherServlet в Spring).
Вам нужно создать бин класса PropertyPlaceHolderConfigurer. Не просто какой-то компонент ArrayList. Как вы думаете, зачем вам этот компонент ArrayList?