spring boot messageSources 无法获取到资源路径问题

文章目录

问题概述

在使用spring boot 做错误信息国际化时,按照既定步骤在项目idearesources 文件文件夹下创建cn.lw.sms目录,并在这个新的目录下创建bundle文件;
在这里插入图片描述
然后在boot application.yml 配置messagesource自动装配:
在这里插入图片描述
国际化code 如下:
在这里插入图片描述
通过 messages.getMessage("error." + ex.getErrorCode(), ex.getLocalizedMessage()) 通过code和传过来的locale来获取具体的信息。按照道理来说应该是可以获取到code代表的本地化信息。然而最终获取的是ex.getLocalizedMessage()信息。就是说配置的messages bundle 并没有其作用.

调试

  1. 通过debug spring boot 有关messagesources的自动装配类MessageSourceAutoConfiguration,在调用getMatchOutcomeForBasename 函数时并没有在cn.lw.sms目录下找到相关的资源;

  2. 猜测,该目录没有打包到classes 中去?idea resources 指向错误?

    • 查看build/resources 目录发现已经存在了打包的文件cn.lw.sms.messages.properties,第一个问题排除;
    • 在idea 中将所有模块全部移除,重新指定source,resources, test,test resources 目录重新编译build,问题还是一样没解决;
  3. 在resources资源目录创建test目录,在test目录创建messages bundle 文件目录:
    在这里插入图片描述
    重新启动项目,debug MessageSourceAutoConfiguration 类的getMatchOutcomeForBasename 函数发现test/qq.properties 可以找到了!
    猜想: 应该是和cn.lw.sms 目录有关系,. 换成/ 试试!

  4. 创建 目录 cn/lw/sms ,居然和cn.lw.sms 可以同时存在,看来离问题解决不远了:
    在这里插入图片描述
    删除cn.lw.sms创建的目录,重新启动项目,资源可以找到了,问题解决.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值