2016-09-16 2 views
1

Я загрузки файлов свойств в весенне-context.xml и я даю внешнее расположение файла свойство в $ {spring.profiles.active} .properties который находится в пути к классам и использует местоположение в качестве плацшлера в spring-context.xml. Моя весна-context.xml является:Невозможно загрузить файл свойств в spring-context.xml. Файл собственности Путь дается в качестве заполнителя в dev.properties

<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} placeholder не разрешено в spring-context.xml и пытается загрузить файл $ {app.config.batch.location} вместо E: /project/properties/config.properties.

Надеюсь, я хорошо объяснил проблему. Пожалуйста помоги!

Спасибо заранее!

ответ

0

Вам необходимо создать bean-класс класса PropertyPlaceHolderConfigurer. Не только некоторые компоненты ArrayList. Почему, по-вашему, вам нужен этот компонент ArrayList?

+0

Привет @ Юрий Плевако Мне нужен был массив ArrayList для справки. Я изменил свой вопрос и разместил свой полный файл spring-context.xml. – Rosh

+0

Таким образом, вам нужно создать PropertyPlaceHolderConfigurer, когда вы создаете свой компонент ArrayList, потому что вы используете заполнители в конфигурации компонента ArrayList, и у вас его нет. Возможным способом является наличие некоторых заполнителей, которые разрешаются вашей системой сборки, пока они обрабатывают ресурсы. –

+0

Yeah.I знаю, но я не могу найти способ ее достижения. Если вы можете что-то предложить, это будет полезно. Спасибо – Rosh

0

Кажется, вы используете пружинные профили, вместо того, чтобы возиться с значением свойства времени инициализации привязки, что вы можете сделать, это ... 1) прочитать файл свойств (анкеты) /WEB-INF/свойства/$ {весна .profiles.active} .properties 2) создайте класс java, который может читать эти значения свойств. (не забудьте использовать интерфейс сопряжения пружинных профилей) 3) когда вы пытаетесь прочитать файл свойств, местоположение которого встроено в файл свойств (шаг 1), объект, созданный на шаге 2, даст значение для ключа <value>${app.config.batch.location}</value> теперь вы можете загрузить этот файл свойств с помощью доступного класса чтения файлов. 4) создайте объект Properties и получите доступ к его значениям.

Примечание: если какая-либо инициализация вашего компонента зависит от значения ключа, прочитанного на этапе 4, выполните инициализацию вручную или создайте свой собственный пользовательский класс *** (сервлет), который загружается перед любым другим классом (даже Spring DispactherServlet) ,