Не удается загрузить файл свойств в 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?

Другие вопросы по тегам