国际化信息支持(I18n MessageSource)
Java SE 提供的国际化支持
对于Java中的国际化信息处理,主要涉及两个类,即java.util.Locale
和java.util.ResourceBundle
。
- Locale
不同的Locale
代表不同的国家和地区,每个国家和地区在Locale
这里都有相应的简写代码表示,包括语言代码以及国家代码,这些代码是ISO标准代码。
- ResourceBundle
ResourceBundle
用来保存特定于某个Locale
的信息(可以是String类型信息,也可以是任何类型的对象)。通常,ResourceBundle
管理一组信息序列,所有的信息序列有统一的一个basename
,然后特定的Locale
的信息,可以根据basename
后追加的语言或者地区代码来区分。
MessageSource与ApplicationContext
Spring在JavaSE的国际化支持的基础上,进一步抽象了国际化信息的访问接口,也就是org.springframework.context.MessageSource
,该接口定义如下:
通过该接口,我们统一了国际化信息的访问方式。传入相应的Locale
、资源的键以及相应参数,就可以取得相应的信息,再也不用先根据Locale
取得ResourceBundle
,然后再从ResourceBundle
查询信息了。
(这里不做详细介绍,更多可以看原文)
容器内部事件发布
(这里不做介绍,更多可以看原文)
多配置模块加载的简化
实际上,这也不算ApplicationContext
比较突出的特色功能,只是相对于BeanFactory
来说,在这一点上做得更好罢了。
我们知道,在使用Spring的IoC轻量级容器进行实际开发的过程中,为了避免出现整个团队因某个资源独占而无法并行、高效地完成工作等问题,通常会将整个系统的配置信息按照某种关注点进行分割,使得关注点逻辑良好地划分到不同的配置文件中,如按照功能模块或者按照系统划分的层次等。
这样,在加载整个系统的bean定义时,就需要让容器同时读入划分到不同配置文件的信息。相对于BeanFactory
来说,ApplicationContext
大大简化了这种情况下的多配置文件的加载工作。
(这里不做详细介绍,更多可以看原文)
小结
ApplicationContext
是Spring在BeanFactory
基础容器之上,提供的另一个IoC容器实现。
它拥有许多BeanFactory所没有的特性,包括统一的资源加载策略、国际化信息支持、容器内事件发布以及简化的多配置文件加载功能 。