пятница, 12 сентября 2014 г.

Как создать java.util.Properties в spring

Порой удобно создавать экземпляр свойств java.util.Properties прямо в spring-конфигурации.
Для этого отлично подходит PropertiesFactoryBean.

При создании следующего бина пары "ключ=значение" будут автоматически разобраны и помещены в Properties-объект:
<bean id="directProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <value>
            <!--прямое задание значения-->
            asyn.timeout=20000
            <!--через placeholder-->
            asyn.port=${espp.http.server.port}
        </value>
    </property>
</bean>
Возможен такой вариант:
<bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.query.substitutions">${hibernate.query.substitutions}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        </props>
    </property>
</bean>
Ещё одна альтернатива - загрузка непосредственно из файла, например:
<bean id="singleFileProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="jdbc_url.properties"/>
</bean>
или
<bean id="numerousFileProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <array>
            <value>jdbc_url.properties</value>
            <value>jdbc_auth.properties</value>
        </array>
    </property>
</bean>

Можно изменять некоторые свойства бина:
- отключить дефолтный синглтон
<property name="singleton" value="false"/>
- позволить продолжить работу при отсутствии файла
<property name="ignoreResourceNotFound" value="true"/>
- определить приоритет источников свойств при их перекрытии
<property name="localOverride" value="true"/>   

А ещё есть возможность подключить xmlns:util="http://www.springframework.org/schema/util и создавать объект напрямую:
<util:properties id="clientProperties">
    <prop key="applinks.broker.host">mcp-gamma</prop>
    <prop key="applinks.broker.port">19080</prop>
</util:properties>

Просто и удобно.
Полный пример доступен по ссылке http://fileload.info/423q3ouc9hda

Комментариев нет:

Отправить комментарий