четверг, 4 декабря 2008 г.

Spring tricks (несколько propertyConfigurer)

Иногда может возникнуть необходимость использовать несколько разных бинов для чтения конфигурации из properties, но если просто объявить их несколько штук, то работать ничего не будет - вылетит эксепшн типа "Could not resolve placeholder 'xxx.yyy". Чтобы все нормально заработало, необходимо переопределить префикс и суффикс, которые используются для обращения к подгруженным properties -  ${xxx.yyy} (выделено красным). Это делается для каждого добавленного 
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer бина (для того, что имеет по умолчанию name="propertyConfigurer" не надо), причем все они должны быть уникальны. Это делается так:

<bean id="propertyAnotherConfigurer" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:another.properties</value>
</list>
</property>
<property name="placeholderPrefix" value="#{"/>
<property name="placeholderSuffix" value="}"/>
</bean>
Теперь нужно использовать соответствующие префиксы и суффиксы при обращении к значениям, загруженным в каждый бин и все будет работать.

1 комментарий:

Lekseich комментирует...

Спасибо!
Два часа пытался понять, почему же у меня другой конфиг не подхватывается!