现在的位置: 首页 > 综合 > 正文

Spring的ApplicationContext加载Property文件

2013年01月30日 ⁄ 综合 ⁄ 共 1400字 ⁄ 字号 评论关闭

利用Spring的ApplicationContext加载Property文件,可以实现国际化和'热'加载文件(不用重启应用).Spring提供了ResourceBundleMessageSource和ReloadableResourceBundleMessageSource两个类加载property文件,后者提供了'热'加载以及指定编码等功能.

例子:配置文件

<!--
        <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames"> <list> <value>resource/msg1</value>
        <value>resource/msg2</value> </list> </property> </bean>
    -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="defaultEncoding" value="gbk" />
        <property name="cacheSeconds" value="5" />
       
        <property name="basenames">
            <list>
                <value>resource/msg1</value>
                <value>resource/msg2</value>
            </list>
        </property>
    </bean>

property文件:

#resource/msg1.properties
message1=message1 value!
#resource/msg1_zh_CN.properties
message1=message1 changed value[CN]!
#resource/msg2.properties
message2=test place holder : {0}!

JAVA Bean:

public class ResourceTestBean {
    private MessageSource resources;

    public void setResources(MessageSource resources) {
        this.resources = resources;
    }
    public void testMsg() {
       
        String message1 = this.resources.getMessage("message1", null, "Default",
                Locale.CHINA);
        System.out.println(message1);
       
        String message2 = this.resources.getMessage("message2",
                new Object[] { "passed in value" }, "default", null);
        System.out.println(message2);
    }
}

Spring的MessageSource的getMessage方法提供了丰富的功能:1,如果要加载的property项不存在,指定默认值.2,指定Local(如果不指定,用JVM运行的机器上的local来决定)来决定加载不同版本的property文件.

 

抱歉!评论已关闭.