Spring的PropertyPlaceHolderConfigurer不会忽略不可解析的文件

时间:2012-10-07 15:30:31

标签: spring

我使用spring的PropertyPlaceHolderConfigurer如下:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="locations">
        <list>
            <value>classpath:default.properties</value>
            <value>file:${user.home}/webextractor.properties</value>
        </list>
    </property>
</bean>

尽管已将ignoreUnresolvablePlaceholders属性设置为true,但仍然会在FileNotFoundException上获得/home/kaykay/webextractor.properties。我知道我可以创建这个文件并将其留空,但我想知道这里有什么问题。

2 个答案:

答案 0 :(得分:33)

ignoreUnresolvablePlaceholders设置为true将忽略未设置的占位符而不抛出异常。 例如,如果您的类@Value("${person.age}")中包含以下属性,并且您的属性文件中未设置相应的值。

设置为true的ignoreResourceNotFound属性将具有您期望的行为,即忽略未找到的资源。

希望这会有所帮助。

答案 1 :(得分:9)

我已经解决了你的问题,我认为Osiris对于财产ignoreUnresolvablePlaceholders是正确的。但是如果你的话,你应该设置属性ignoreResourceNotFound为真。因此,如果文件不存在,那么它将忽略该文件。

修改后的代码将是

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="locations">
        <list>
            <value>classpath:default.properties</value>
            <value>file:${user.home}/webextractor.properties</value>
        </list>
    </property>
</bean>

试试这段代码并告诉我。