zoukankan      html  css  js  c++  java
  • 后端——框架——容器框架——spring_core——国际化 & Properties

    1、国际化

      国际化的知识点有两个部分,messageSource类结构,实现步骤。

    1.1    类结构

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

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

      DelegatingMessageSource:这个对象无实际的意义,当IOC容器中不存在messageSource的bean时,会加载一个空的实现类,此时注入的类型为DelegatingMessageSource,它调用getMessage方法不会获取任何国际化的信息。相当于IOC初始化MessageSource失败之后给的默认值。

      StaticMessageSource:基本不怎么使用,我估计是测试国际化时使用的对象,类似于StaticApplicationContext。

      ResourceBundleMessageSource:最常用的对象,它拥有ResourceBundle属性,所有获取国际化信息的方法都委托给ResourceBundle对象。

    ReloadableResourceBundleMessageSource:支持热部署,国际化文件不必在classpath下。

    1.2    步骤

    实现国际化的步骤如下:

      第一步,注入MessageSource类。在IOC初始化MessageSource时,首先会在当前IOC容器中查找ID或name为messageSource的类,如果查找不到,会继续在父容器中查找,如果所有父容器中还未找到,注入DelegatingMessageSource实现类,相当于空的实现类,此时虽然能调用getMessage等方法,但是不会返回正确的结果。

      第二步,编写和配置国际化资源文件 ,格式为basename_language_country.properties。配置时需要设置ResourceBundleMessageSource的basename属性或basenames属性。basenames对应多份资源文件,是List集合,basename对应一份资源文件。

      第三步,获取MessageSource对象,有很多种,实现MessageSourceAware,@AutoWire,applicationContext.getBean(“messge”),或者直接将applicationContext转换为MessageSource,调用其中的getMessage方法,其中第一个参数为code,第二个参数为占位符对应的参数,第三个为查找不到code时返回的默认值,第四个参数为Locale。

    2、Properties

    Properties的知识点有三部分。在IOC中查找变量,配置查找变量的顺序,引入自定义变量或Properties文件。

    IOC查找变量的顺序跟spring boot基本是类似的。

    • 首先是运行参数,如果是java application,运行参数指java argument。如果是web项目,运行参数是指context-param或者是context-config。
    • 其次是系统变量,JVM系统变量,操作系统变量。
    • 然后是配置文件,例如spring boot中的application.properties或application.yml
    • 最后是自定义变量或者是引入的自定义Properties文件。

    变量查找的顺序是由Environment接口实现类决定的,默认的实现类名称是StandardEnvironment。如果需要理解和修改变量的查找顺序,可以查看相关类的源码。

    要添加自定义变量,最好的方式是定义Properties文件,并通过@PropertySource注解引入。其中value属性为Properties配置文件的路径。

  • 相关阅读:
    守卫者的挑战
    黑魔法师之门
    noip2015 普及组
    noip2015 提高组day1、day2
    40026118素数的个数
    高精度模板
    经典背包系列问题
    修篱笆
    [LintCode] Linked List Cycle
    [LintCode] Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/rain144576/p/14758723.html
Copyright © 2011-2022 走看看