• 后端——框架——容器框架——spring_core——《官网》阅读笔记——第一章节7(国际化)


      国际化的知识点大致可以分为两个部分,第一部分为MessageSource对象的类结构,第二部分为使用步骤。

    1、类结构

      

      忽略其中的接口和抽象类,因为这些对象不可配置。

      剩余的类有四个,DelegatingMessageSource,StaticMessageSource,ResourceBundleMessageSource,ReloadableResourceBundleMessageSource。

    • DelegatingMessageSource:这个对象无实际的意义,当IOC容器中不存在messageSource的bean时,会加载一个空的实现类,此时注入的类型为DelegatingMessageSource,它调用getMessage方法不会获取任何国际化的信息。相当于IOC初始化MessageSource失败之后给的默认值。
    • StaticMessageSource:基本不怎么使用,我估计是测试国际化时使用的对象,类似于StaticApplicationContext。
    • ResourceBundleMessageSource:最常用的对象,它拥有ResourceBundle属性,所有获取国际化信息的方法都委托给ResourceBundle对象。
    • ReloadableResourceBundleMessageSource:支持热部署,国际化文件不必在classpath下。

    2、使用步骤

      实现国际化的步骤如下:

    1. 注入MessageSource类。在IOC初始化MessageSource时,首先会在当前IOC容器中查找ID或name为messageSource的类,如果查找不到,会继续在父容器中查找,如果所有父容器中还未找到,注入DelegatingMessageSource实现类,相当于空的实现类,此时虽然能调用getMessage等方法,但是不会返回正确的结果。
    2. 编写和配置国际化资源文件 ,格式为basename_language_country.properties。配置时需要设置ResourceBundleMessageSource的basename属性或basenames属性。basenames对应多份资源文件,是List集合,basename对应一份资源文件。
    3. 获取MessageSource对象,有很多种,实现MessageSourceAware,@AutoWire,applicationContext.getBean(“messge”),或者直接将applicationContext转换为MessageSource,调用其中的getMessage方法,其中第一个参数为code,第二个参数为占位符对应的参数,第三个为查找不到code时返回的默认值,第四个参数为Locale。

    3、示例

     配置messageSource

    <!-- 注入ResourceBundleMessageResource -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    	<property name="basenames">
    		<list>
    			<value>i18n/message</value>
    		</list>
    	</property>
    </bean>
    

      在resources下创建i18n文件夹,创建message.properties国际化文件

    # no argument
    message=Hello World
    

      调用,控制台会输出Hello  World

      public static void testMessageResource() {
        MessageSource resource = new ClassPathXmlApplicationContext("spring/application.xml");
        String message = resource.getMessage("message", null, "Default",Locale.getDefault());
        System.out.println(message);
      }
  • 相关阅读:
    phpexcel 字符串转码
    thinkphp 3.2 linux二级目录安装
    linux 系统、命令、软件
    thinkphp3.2和phpexcel导入
    苹果手机微信分享代码失效
    thinkphp3.2与phpexcel带图片生成 完美案例
    thinkphp3.2与phpexcel基础生成
    thinkphp 3.2加载类
    thinkphp 3.2与phpexcel
    thinkphp 导出exl功能
  • 原文地址:https://www.cnblogs.com/rain144576/p/12272478.html
Copyright © 2020-2023  润新知