• 【sping揭秘】7、国际化信息支持


    Spring提供messagesource接口,来进行国际化事务处理

     

    Applicationcontext会优先找一个名为messageSouce的messageSource接口实现bean,如果找不到那么内部会默认实例化DelegatingMessageSource(书中表示是:StaticMessageSource)实例

    我们暗中观察一波源码,通过源码我们发现在spring5中其实默认实现的是DelegatingMessageSource对象:

     

    但是通常一般配置方式是自己配置一个名称为messageSource的bean对象,使用的是ResourceBundleMessageSource对象

    这里我们先手动使用一次

    1、 先修改配置文件,配置上对应的bean

    <!-- 国际化配置 -->
        <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        
            <property name="basenames">
                <list>
                    <value>i18/users</value>
                    <value>i18/errormsg</value>
                </list>
            </property>
        
        </bean>

    2、 新增对应的i18文件

     

     

    根据这个配置,写个demo测试一下

    package spring.messagesource;
    
    import java.util.Locale;
    
    import org.junit.Test;
    import org.springframework.context.MessageSource;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 测试spring的国际化
     * 
     * @author xiaof
     *
     */
    public class I18Demo {
    
        @Test
        public void test1() {
            MessageSource resources = new ClassPathXmlApplicationContext("classpath:applicationContext-bean.xml");
            String admin = resources.getMessage("user.admin", null, "Default", new Locale("us"));
            System.out.println(admin);
            String superadmin = resources.getMessage("user.superadmin", null, "Default", new Locale("us"));
            System.out.println(superadmin);
            String name = resources.getMessage("errormsg.name", null, "Default", new Locale("us"));
            System.out.println(name);
            String pwd = resources.getMessage("errormsg.pwd", null, "Default", new Locale("us"));
            System.out.println(pwd);
        }
    
    }

    测试结果:

     

  • 相关阅读:
    DROP TABLE 恢复【一】
    Recover InnoDB dictionary
    Percona XtraDB Cluster
    主从复制延时判断
    Keepalived+MySQL实现高可用
    Performance Tuning MySQL
    Redis实现异步消息队列与延时队列
    Python多线程中的setDaemon
    Python实现远程控制单片机led状态
    【机器学习】朴素贝叶斯应用实例
  • 原文地址:https://www.cnblogs.com/cutter-point/p/8666962.html
Copyright © 2020-2023  润新知