最近在整理springBoot国际化时,发现国际化没有生效,通过报错提示在 MessageTag -> doEndTag处打断点
最后发现messageSource并不是ResourceBundleMessageSource,而是DelegatingMessageSource代理对象,其内部代理的对象为null,可知springboot自动配置的ResourceBundleMessageSource没有生效。

springBoot启动时,会自动加载MessageSourceAutoConfiguration,同时我们需要注意的是MessageSourceAutoConfiguration上的@Conditional({MessageSourceAutoConfiguration.ResourceBundleCondition.class})注解,@Conditional注解为当满足里面所有Condition类的条件时执行,分析ResourceBundleCondition.class的getMatchOutcome方法

public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {String basename = context.getEnvironment().getProperty("spring.messages.basename", "messages");ConditionOutcome outcome = (ConditionOutcome)cache.get(basename);if (outcome == null) {outcome = this.getMatchOutcomeForBasename(context, basename);cache.put(basename, outcome);}return outcome;}private ConditionOutcome getMatchOutcomeForBasename(ConditionContext context, String basename) {//默认目录默认名Builder message = ConditionMessage.forCondition("ResourceBundle", new Object[0]);String[] var4 = StringUtils.commaDelimitedListToStringArray(StringUtils.trimAllWhitespace(basename));int var5 = var4.length;for(int var6 = 0; var6 < var5; ++var6) {String name = var4[var6];//根据name,获取相关文件Resource[] var8 = this.getResources(context.getClassLoader(), name);int var9 = var8.length;for(int var10 = 0; var10 < var9; ++var10) {Resource resource = var8[var10];if (resource.exists()) {return ConditionOutcome.match(message.found("bundle").items(new Object[]{resource}));}}}return ConditionOutcome.noMatch(message.didNotFind("bundle with basename " + basename).atAll());}private Resource[] getResources(ClassLoader classLoader, String name) {String target = name.replace('.', '/');try {return (new PathMatchingResourcePatternResolver(classLoader)).getResources("classpath*:" + target + ".properties");} catch (Exception var5) {return MessageSourceAutoConfiguration.NO_RESOURCES;}}
}

从上述代码发现,他需要读取后缀为.properties才可以获取到为true的ConditionOutcome,否则返回false

参考文章:https://www.cnblogs.com/jaxlove-it/p/10613040.html

SpringBoot国际化配置(i8n配置)未生效(完美解决)相关推荐

  1. win10添加环境变量后没用_教你Win10系统配置的环境变量未生效的解决方法

    教你Win10系统配置的环境变量未生效的解决方法.一些Win10小伙伴经常遇到配置了环境变量无法生效的情况.那么Win10系统安装了jdk,修改环境变量配置不生效要如何解决呢?有遇到此类问题的小伙伴就 ...

  2. 水星光猫服务器未响应,不改光猫任何配置,水星SG105 Pro完美解决电信ITV、网络单线复用...

    小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励. [前情提要]:基装的时候弱电箱到电视墙只留了一根线,电视墙要同时使用网络和ITV,必须使用单线复用.两台SG105 Pro ...

  3. 如何安装配置JDK(保姆级完美解决教程+附百度网盘链接)

    JDK种类繁多,在这里我以JDK14为例,为什么以JDK14为例呢?当然是为了破解白嫖idea2020旗舰版.^_^^_^(如果大家感兴趣,我后续会一个教程)     首先去甲骨文官方网站下载JDK1 ...

  4. @WebFilter创建未生效的解决办法

    spring web项目 加入@WebFilter类未生效,研究了下是web.xml头未配置正确 <?xml version="1.0" encoding="UTF ...

  5. linux下修改netmask未生效的解决办法

    通过vi /etc/sysconfig/network-scripts/ifcfg-etho修改如下的netmask 修改后,wq!保存退出,重启网关:service network restart, ...

  6. Linux中配置DNS出现的问题,完美解决liunx下dns配置重启失效的问题

    有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynami ...

  7. Mac 环境下 Java JDK 的安装与环境变量配置详解(已完美解决)

    万叶集

  8. 使用UI框架时 css不生效 使用/deep/完美解决避免污染全局样式

    使用UI框架时 css不生效 完美解决避免污染全局样式 使用前端UI框架时 在页面上单独修改css 但是不生效 都是在 <style scoped> </style>这样的模式 ...

  9. jenkins切换git分支未生效

    git有如下2个分支: 初始jenkins设置develop分支: 切换分支后未生效: 解决方法: 多级目录需要添加文件夹路径.

  10. win10蓝牙已配对安卓手机但连接不上 完美解决方法

    win10蓝牙连接手机蓝牙,显示已配对但未连接 完美解决办法. 电脑:惠普暗影精灵台式机win10,版本号21H2 手机:安卓手机 1. win10蓝牙连接不是手机蓝牙基本上是驱动太老了,自带Wind ...

最新文章

  1. 解码转码---System.web.HttpUtility 对象分析
  2. c语言字符串去重简单,C语言实现简单飞机大战
  3. web 攻击靶机解题过程
  4. 【Linux】Ubuntu下进行C语言编程
  5. [读书笔记] 敏捷软件开发:原则、模式与实践
  6. log4j每天产生一日志文件
  7. hiho1015(kmp+统计出现次数)
  8. 生成activiti需要的25张系统表
  9. PBOC规范研究之四、文件结构及访问(转)
  10. 挑战性题目DSCT103:客观指标评价问题
  11. ESP8266 WIFI模块使用说明
  12. 阿里云企业邮箱的imap和pop3设置
  13. windows下的./ 和 ../
  14. java面向对象编程(六)--四大特征之继承
  15. 怎么查看浪潮服务器型号,供应 浪潮服务器 各种型号
  16. 淘宝搜索展现原理,店铺商品排名较低怎么办
  17. vue中实现附件下载
  18. Java中线程是如何实现的
  19. 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
  20. 阿里云大学考试Java初级题目及解析-java初级

热门文章

  1. ​​​​​​​Snmp学习总结(五)——SNMP4J介绍
  2. js实现滚动功能---公告栏
  3. CSS样式基本属性(标签权重对比)
  4. Kdevelop的安装与汉化
  5. 微信公众平台开发(4)--填写服务器配置并验证有效性
  6. 致友军,宁可食无肉,不可居无竹
  7. nginx 和dns配置
  8. wp-setting.php对应文件代码的注释来看
  9. Java 数据库操作,JDBC学习总结
  10. 插值算法-克里金法(Java jk3d.jar测试过程)