Я в настоящее время usinmg PropertyPlaceholderConfigurer
для загрузки свойств в контекст моей весны, однако я хочу иметь пользовательскую иерархию/переопределение файлов свойств, которые я обрабатываю в классе Java. Могу ли я получить свой класс, который сам является компонентом в контексте, вставить свойства в контекст?Весенние свойства загрузки из фасоли
например.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:/config/conf.properties" />
</bean>
<bean id="config" class="com.main.Config" />
My Config класса есть метод Properties getProperties()
- я могу телеграфировать, что в весной как-то? Очевидно, что свойства не будут загружены до тех пор, пока конфигурационный компонент не будет создан или не будет создан.
Спасибо!
Update: Как полагает ответ я изменить Config на Config extends PropertySource<Properties>
и пришлось написать небольшую обертку вокруг MutablePropertySources
, которая принимает один PropertySource
, а затем мой XML выглядит следующим образом:
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="propertySources">
<bean class="com.main.ConfigMutablePropertySources">
<constructor-arg name="propertySource" ref="config" />
</bean>
</property>
</bean>
Где:
public class ConfigMutablePropertySources extends MutablePropertySources {
public ConfigMutablePropertySources(PropertySource<?> propertySource) {
super(new MutablePropertySources());
addLast(propertySource);
}
}
ОК, поэтому я добавил PropertySourcesPlaceholderConfigurer и подключил его. Я вижу, что он инициализирован перед моими другими компонентами, но свойства моих других beans теперь не работают. Получение: Не удалось разрешить placeholder 'pool.size' \t at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties (PlaceholderConfigurerSupport.java:209) ~ [org.springframework.beans.jar: 3.1.1 .. . – naumcho
Документация, связанная с методом 'setPropertySources (...)', говорит следующее: 'Установка этого свойства указывает, что источники свойств среды и локальные свойства следует игнорировать. ', Поэтому вам, вероятно, придется добавить их в свою коллекцию PropertySources , –
Я уже загружаю (и регистрирую) разные типы свойств в моем классе конфигурации, но по какой-то причине они не попадают в весенний контекст – naumcho