美文网首页工作
spring boot 国际化文件外置配置

spring boot 国际化文件外置配置

作者: KingdomCoder | 来源:发表于2017-07-19 12:46 被阅读59次

    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分钟以上.

    相关文章

      网友评论

      • Running丶:你好 怎么让外部文件和内部文件一起兼容?

      本文标题:spring boot 国际化文件外置配置

      本文链接:https://www.haomeiwen.com/subject/qxrlkxtx.html