Автоматически подключать несколько массивов из файла свойств с помощью Spring - PullRequest
2 голосов
/ 28 июля 2011

У меня есть такой класс:

class MyClass {
    Map<String, String[]> arrays; 
    public void setArrays(Map<String, String[]> arrays)
    {
        this.arrays = arrays;
    }
    public String[] getArray(String key)
    {
        return arrays.get(key);
    }
}    

Значения предоставляются из файла свойств следующим образом:

# my.properties
arrays.arrayOne=a,b,c
arrays.arrayTwo=d,e,f

Используя пружину, я могу связать свойство следующим образом:

<property name="arrays">
    <map>
        <entry key="arrayOne" value="${arrays.arrayOne}"/>
        <entry key="arrayTwo" value="${arrays.arrayTwo}"/>
    </map>
</property>

Теперь это работает, но мне приходится вручную редактировать проводку каждый раз, когда я добавляю новую запись в файл свойств. Есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 29 июля 2011

Я решил свою проблему с помощью PropertyOverrideConfigurer:

<!-- applicationContext.xml -->
<bean id="myBean" class="com.myapp.MyClass">
    <property name="arrays">
        <map/>
    </property>
</bean>

<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
    <property name="location" value="classpath:my.properties"/>
</bean>

(я мог бы также инициировать карту непосредственно в своем классе, чтобы сделать код более кратким)

# my.properties
myBean.arrays[arrayOne]=a,b,c
myBean.arrays[arrayTwo]=d,e,f

Это все, что нужно, и Spring правильно заполняет карту, дополнения к файлу свойств обновляются без дальнейшей настройки. Вызов getArray ("arrayOne") для моего компонента возвращает массив строк {"a", "b", "c"}, как и предполагалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...