从spring加载多个外部属性文件

时间:2016-03-04 12:03:01

标签: java spring

我想从外部文件夹加载Spring的所有属性文件。我成功加载了一个文件,但添加一个通配符似乎不起作用。

这适用(加载 test.properties ):

<bean id="propertiesLocation"
    class="org.springframework.web.context.support.ServletContextParameterFactoryBean">
    <property name="initParamName"><value>file://EXTERNAL_DIRECTORY/test.properties</value></property>
</bean>

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" ref="propertiesLocation"></property>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="0"/>
</bean>

这不(加载 *。属性):

<bean id="propertiesLocation"
    class="org.springframework.web.context.support.ServletContextParameterFactoryBean">
    <property name="initParamName"><value>file://EXTERNAL_DIRECTORY/*.properties</value></property>
</bean>

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" ref="propertiesLocation"></property>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="0"/>
</bean>

错误:

Caused by: java.io.FileNotFoundException: /EXTERNAL_DIRECTORY/*.properties (No es un directorio)

如何让Spring加载文件夹中的所有外部属性文件?

编辑:我使用第一个bean( ServletContextParameterFactoryBean ),因为在项目中我从web.xml文件中检索路径。我忘记了这个,只是在豆子里贴了一条路,这是不正确的,但与这个问题无关。

1 个答案:

答案 0 :(得分:1)

尝试使用以下内容:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="file://EXTERNAL_DIRECTORY/*.properties"/>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="0"/>
</bean>

如果您需要包含更多资源,可以进行下一步:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" >
        <list>
            <value>classpath:single.properties"</value>
            <value>file://EXTERNAL_DIRECTORY/*.properties"</value>
            <value>file://ANOTHER_EXTERNAL_DIRECTORY/*.properties"</value>
        </list>
    </property>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="0"/>
</bean>

使用PropertyEditor的默认实现,Spring会将字符串转换为Resource。您可以找到details in documentation

希望这会有所帮助。