spring中进行国际化

来源:互联网 发布:supfire神火官方淘宝 编辑:程序博客网 时间:2024/06/05 02:49

最近做的项目是使用ejb3,所以好长时间没接触spring,连最基本的东西都忘了,下面就记录一下,spring中消息处理机制(i18n或国际化):

spring中常用进行消息处理的类有ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,其配置如下:

1.ReloadableResourceBundleMessageSource配置:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="utf-8"></property>
<property name="basenames">
<array>
<value>classpath:messages</value>
<value>classpath:validationMessage</value>
</array>
</property>
<!-- 表示2分钟后重新扫描配置文件 -->
<property name="cacheSeconds" value="120"></property>
</bean>

2.ResourceBundleMessageSource配置:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<array>
<value>classpath:messages</value>
<value>classpath:validationMessage</value>
</array>
</property>
</bean>

主要区别:

1.ReloadableResourceBundleMessageSource可以设置国际化文件编码,而ResourceBundleMessageSource不行。

2.ReloadableResourceBundleMessageSource能够动态加载国际化配置文件,当改变国际化文件后,不需要重启服务。

3.加载国际化文件的方式不一样

spring中加载配置文件的方式:

当一个ApplicationContext被加载时,它会自动在context中查找已定义为MessageSource类型的bean。此bean的名称须为messageSource。如果找到,那么所有对上述方法的调用将被委托给该bean。否则ApplicationContext会在其父类中查找是否含有同名的bean。如果有,就把它作为MessageSource。如果它最终没有找到任何的消息源,一个空的StaticMessageSource将会被实例化,使它能够接受上述方法的调用。


0 0
原创粉丝点击