• 导读
  • 概述
  • 实例
  • 注意事项

导读

Spring-国际化信息01-基础知识

Spring-国际化信息02-MessageSource接口

Spring-国际化信息03-容器级的国际化信息资源


概述

我们查看ApplicationContext中的源码可以看到

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver

ApplicationContext 实现了 MessageSource 接口。

在一般情况下,国际化信息资源应该是容器级。我们一般不会将MessageSource作为一个Bean注入到其他的Bean中,相反MessageSource作为容器的基础设施向容器中所有的Bean开放。

国际化信息一般在系统输出信息时使用,如Spring MVC的页面标签,控制器Controller等,不同的模块都可能通过这些组件访问国际化信息,因此Spring就将国际化消息作为容器的公共基础设施对所有组件开放。

Spring根据反射机制从BeanDefinitionRegistry中找出名称为“messageSource”且类型为org.springframework.context.MessageSource的Bean,将这个Bean定义的信息资源加载为容器级的国际化信息资源.


实例

代码已托管到Github—> https://github.com/yangshangwei/SpringMaster

资源文件

greeting.common=How are you {0}?,today is {1}
greeting.morning=Good Morning {0}! now is {1,time,short}
greeting.afternoon=Good Afternoon {0}! now is {1,date,long}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!--①注册资源Bean,其Bean名称只能为messageSource --> <bean id="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basenames" ref="resourceList"/></bean><util:list id="resourceList"><value>i18n/fmt_resource</value></util:list></beans>

测试类

package com.xgj.ioc.i18n.container;import java.util.GregorianCalendar;
import java.util.Locale;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class ContainerI18NTest {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/xgj/ioc/i18n/container/beans.xml");// 动态参数Object[] params = { "XiaoGongJiang", new GregorianCalendar().getTime() };// 直接通过容器访问国际化信息String msg1 = ctx.getMessage("greeting.common", params, Locale.US);String msg2 = ctx.getMessage("greeting.morning", params, Locale.CHINA);System.out.println(msg1);System.out.println(msg2);}
}

运行结果:

注意事项

MessageSource Bean名字必须命名为“messageSource”,以上代码将抛出NoSuchMessageException异常

假设我们将id=”messageSource” 改为 id=”messageSource1”

再此运行

Spring-国际化信息03-容器级的国际化信息资源相关推荐

  1. Springboot国际化信息(i18n)解析

    国际化信息理解 国际化信息也称为本地化信息 . Java 通过 java.util.Locale 类来表示本地化对象,它通过 "语言类型" 和 "国家/地区" ...

  2. springmvc二十四:自定义国际化信息

    springmvc中区域信息是由区域信息解析器得到的. private LocaleResolver localeResolver 默认会用一个AcceptHeaderLocaleResolver 自 ...

  3. Struts2的国际化(一)-国际化资源文件的配置及国际化信息的访问

    一.概述: 1)国际化是一种技术:在程序设计领域,把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 2)本地化是一个动作:与国际化对应的是本地化,指让一个具备国际 ...

  4. spring读取配置文件初始化容器操作总结

    Spring初始化容器.三种经常用到的实现: 一.ClassPathXmlApplicationContext:从类路径中加载. 二.FileSystemXmlApplicationContext:从 ...

  5. Spring IoC(一)IoC容器的设计与实现:BeanFactory与ApplicationContext

    在写BeanFactory与ApplicationContext 之前,我想先简单聊一聊Spring IoC 容器,希望能给大家一个参考.如果你对这反面的知识比较了解,可以直接跳过. (一)Sprin ...

  6. spring系列之IOC容器结构

    IOC容器结构 IOC(控制反转): 传统javaSE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象,而Ioc是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创 ...

  7. Spring技术内幕——Spring Framework的IOC容器实现(一)

    一.SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架 ...

  8. 动态数据的国际化、几种主要的国际化标签

    动态数据的国际化.几种主要的国际化标签 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理.Java 中提供了解决这些问题的 ...

  9. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

最新文章

  1. Eclipse生成jar文件
  2. 数据中心外包面临法律考验
  3. 1.Spring Cloud Alibaba教程:简介
  4. PaddlePaddle飞桨OCR文本检测——更改模型保存间隔(六)
  5. 8个流行的Python可视化工具包。
  6. Atitit 综合原则 软件与项目开发中的理念信念 目录 1.1. 建议组合使用扬长避短 1 1.2. 常见数据库 mysql oracle mssql mongodb postgre sqlit
  7. 异速联某客户端无法登陆
  8. 拼多多直播不显示服务器,使用电脑端进行拼多多直播的开播教程
  9. 云服务器安全使用原则
  10. 计算机自动维护有用吗,Win10怎么开启自动维护功能?系统自动维护有什么作用?...
  11. 美团王兴,为什么让骑手注册个体户?详解他的套路,望周知
  12. 微信小程序怎么推广运营-微信小程序引流方法
  13. was6.1偶尔报错com.ibm.websphere.ce.cm.StaleConnectionException
  14. CSK6开发分享2-视觉开发套件驱屏魔改篇
  15. 在家中搭建网站服务器可行吗?
  16. mosquitto_sub、mosquitto_pub命令参数解析
  17. 安装Docker,在本机上跑一个‘2048’小游戏(脉冲云在线体验)
  18. java静态函数_(基础)java中的静态变量与静态函数Static
  19. 开源Linux、Windows服务器数据备份工具选型分析(一) UrBackup
  20. [Excel.2010数据透视表应用大全].Excel.Home.扫描版 百度云

热门文章

  1. 温铁军、林毅夫、陈平,从学术、现实等多方面来分析,谁的价值高?
  2. ubuntu 18.04 安装 opencv3.4.1 以及 opencv_contrib 3.4.1] 亲测可用
  3. 135. Leetcode 46. 全排列 (回溯算法-排列问题)
  4. 知识图谱学习笔记-PageRank
  5. 文巾解题1588. 所有奇数长度子数组的和
  6. 文巾解题 283. 移动零
  7. hadoop学习--K-Means(聚类算法)
  8. 新手入门深度学习 | 1-1:配置深度学习环境
  9. LeetCode题组:第121题-买卖股票的最佳时机
  10. 数据分析软件-weka