工作

spring boot 国际化文件外置配置

2017-07-19  本文已影响59人  KingdomCoder

spring boot 国际化文件外置配置

spring boot 默认的国际化配置这里就不说了,主要说下国际化文件外置的一个配置。

需求

messages.properties文件外置并且可以动态改变翻译文本。

分析

spring boot的MessageSourceAutoConfiguration默认的加载逻辑:

1. spring.messages.basename 配置国际化文件的名称,比如默认值是messages,多个值逗号分隔,那么默认从classpath*:messages.properties读取。

也就是说spring.messages.basename会被默认加上头尾classpath*:[beaname].properties

这个逻辑在这里

2.MessageSource也是在这个Configuration里定义了具体类。

实现方法

1. 编译打包后,需要让resourceBundle文件外置,那么就不能用spring boot的默认逻辑,要重写

return new PathMatchingResourcePatternResolver(classLoader) .getResources("classpath*:" + name + ".properties");

2. ResourceBundleMessageSource要改成ReloadableResourceBundleMessageSource, 支持动态改变文本

步骤

拷贝MessageSourceAutoConfiguration出来,修改

a. 去掉@ConditionalOnMissingBean(value = MessageSource.class, search = SearchStrategy.CURRENT)

b. 改MessageSource实现类,ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

c. 改路径匹配

部署配置

这样就可以对resourceBundle文件设置外部地址了

cacheSeconds是ReloadableResourceBundleMessageSource刷新的间隔时间,设太短会影响性能,生产环境建议30分钟以上.

上一篇下一篇

猜你喜欢

热点阅读