最近在整理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. 堆和栈的主要区别由以下几点:
  2. oracle将时间加一天,加小时,加分,加秒
  3. 动态规划(五) 最大连续子序列和(Maximum Continuous Subsequence Sum)
  4. click vue 重复调用_VUE防止多次点击,重复请求
  5. java activity生命周_关于Activity的生命周期和任务栈的理解
  6. M - Corporate Identity(多组字符串匹配问题)
  7. Firefox浏览器无法安装firebug和firepath插件问题解决
  8. 软件详细设计文档(终)
  9. 电视机与计算机共享,使用MiShare实现一键共享电脑中的图片视频到电视机上观看...
  10. LCS算法 文本对比的实现
  11. springboot实现条形码_OkapiBarcode生成条形码
  12. SLIC超像素算法学习笔记
  13. PS(Photo Shop Cs6)批量调整图片大小
  14. HTML/CSS 长度单位 px和pt的区别
  15. 进制转换(C++实现)
  16. 电脑哔哩哔哩播放器调整为html5,谷歌浏览器插件哔哩哔哩(Bilibili)播放器扩展Extension for Bilibili Player关闭弹幕、截图、画中画...
  17. 三维模型的泰森多面体离散
  18. Linux lolcat输出彩色格言
  19. 华科计算机博导刘云生论文,华科论文式要求.doc
  20. 网络直播间装修业的崛起

热门文章

  1. 人工智能的最后一公里
  2. RocksDB 简介
  3. 能翻译维吾尔语的软件有哪些?这几个可以用用看
  4. vi VS vim编辑器【有待完善】
  5. C++友元函数 普通函数声明为友元函数
  6. 博客园_01_为博客园添加目录的方法总结
  7. Android procrank
  8. hexo 菜单_Hexo 自定义主题和菜单
  9. 微信群发太简单了,三秒通知到你的全部好友!Python牛逼
  10. 《自动化测试最佳实践》讲座总结