另一Spring bean属性默认值及属性文件覆盖的方法

通过PropertyOverrideConfigurer可以覆盖spring bean设置或者未设置的属性。见Spring bean属性的默认值和通过属性文件覆盖

问题是如果希望通过一个配置文件,比如在classpath下,作为默认属性文件,另外,在用户目录下,为用户生成自定义的配置文件。这样比较利于测试和部署,因为默认配置和用户配置使用相同的文件格式。那么还是要用到:

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

配置文件:

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

<bean id="user" class="helloworld.User">
    <property name="name" value="${user.name}" />
</bean>

这里,user.home变量是java虚拟机带的系统变量,为当前用户的主目录。相当于通过以下代码获取:

System.getProperty("user.home");

另外,配置在后面的文件将覆盖前面配置文件的配置。这样如果只有classpath下的配置文件,则其生效,如果在用户目录下有配置文件,默认的classpath下配置属性将被替代。

PDF下載    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply