SpringBoot多模块I18N配置无效,导致No message found under code 'xxx' for locale 'zh_CN_#Hans'问题
在SpringBoot多模块项目开发中,新增了国际化配置
1 | spring: |
Resource
目录下存在i18n/messages
,文件中配置key=value
。
异常
使用时遇到org.springframework.context.NoSuchMessageException: No message found under code 'error.xxxx.message' for locale 'zh_CN_#Hans'
。
排查
- 检查配置项是否正确;
- 检查
Resource
目录下文件是否存在; - 检查文件中
key=value
是否存在; - 检查编码文件编码是否为UTF_8;
经过排查,发现以上问题均不存在,且断点进入MessageSource
相关方法中发现parentMessageSource
始终为空。
解决
后来,看了下messages
的配置位置,是在被依赖模块的application.yml
配置文件中,想到应该是项目启动后,使用过程中并未在启动项目的Resource
目录下发现i18n/messages
,而配置生效的路径则为被依赖模块的Resource
目录下,因此,导致在被依赖模块目录下找不到i18n/messages
而报错。
将配置转移到启动项目的配置文件中,再次测试国际化正常。
- 本文链接: https://acehjm.github.io/2019/08/28/i18n-error/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!