SpringBoot国际化配置(i8n配置)未生效(完美解决)
最近在整理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配置)未生效(完美解决)相关推荐
- win10添加环境变量后没用_教你Win10系统配置的环境变量未生效的解决方法
教你Win10系统配置的环境变量未生效的解决方法.一些Win10小伙伴经常遇到配置了环境变量无法生效的情况.那么Win10系统安装了jdk,修改环境变量配置不生效要如何解决呢?有遇到此类问题的小伙伴就 ...
- 水星光猫服务器未响应,不改光猫任何配置,水星SG105 Pro完美解决电信ITV、网络单线复用...
小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励. [前情提要]:基装的时候弱电箱到电视墙只留了一根线,电视墙要同时使用网络和ITV,必须使用单线复用.两台SG105 Pro ...
- 如何安装配置JDK(保姆级完美解决教程+附百度网盘链接)
JDK种类繁多,在这里我以JDK14为例,为什么以JDK14为例呢?当然是为了破解白嫖idea2020旗舰版.^_^^_^(如果大家感兴趣,我后续会一个教程) 首先去甲骨文官方网站下载JDK1 ...
- @WebFilter创建未生效的解决办法
spring web项目 加入@WebFilter类未生效,研究了下是web.xml头未配置正确 <?xml version="1.0" encoding="UTF ...
- linux下修改netmask未生效的解决办法
通过vi /etc/sysconfig/network-scripts/ifcfg-etho修改如下的netmask 修改后,wq!保存退出,重启网关:service network restart, ...
- Linux中配置DNS出现的问题,完美解决liunx下dns配置重启失效的问题
有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynami ...
- Mac 环境下 Java JDK 的安装与环境变量配置详解(已完美解决)
万叶集
- 使用UI框架时 css不生效 使用/deep/完美解决避免污染全局样式
使用UI框架时 css不生效 完美解决避免污染全局样式 使用前端UI框架时 在页面上单独修改css 但是不生效 都是在 <style scoped> </style>这样的模式 ...
- jenkins切换git分支未生效
git有如下2个分支: 初始jenkins设置develop分支: 切换分支后未生效: 解决方法: 多级目录需要添加文件夹路径.
- win10蓝牙已配对安卓手机但连接不上 完美解决方法
win10蓝牙连接手机蓝牙,显示已配对但未连接 完美解决办法. 电脑:惠普暗影精灵台式机win10,版本号21H2 手机:安卓手机 1. win10蓝牙连接不是手机蓝牙基本上是驱动太老了,自带Wind ...
最新文章
- 解码转码---System.web.HttpUtility 对象分析
- c语言字符串去重简单,C语言实现简单飞机大战
- web 攻击靶机解题过程
- 【Linux】Ubuntu下进行C语言编程
- [读书笔记] 敏捷软件开发:原则、模式与实践
- log4j每天产生一日志文件
- hiho1015(kmp+统计出现次数)
- 生成activiti需要的25张系统表
- PBOC规范研究之四、文件结构及访问(转)
- 挑战性题目DSCT103:客观指标评价问题
- ESP8266 WIFI模块使用说明
- 阿里云企业邮箱的imap和pop3设置
- windows下的./ 和 ../
- java面向对象编程(六)--四大特征之继承
- 怎么查看浪潮服务器型号,供应 浪潮服务器 各种型号
- 淘宝搜索展现原理,店铺商品排名较低怎么办
- vue中实现附件下载
- Java中线程是如何实现的
- 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
- 阿里云大学考试Java初级题目及解析-java初级
热门文章
- ​​​​​​​Snmp学习总结(五)——SNMP4J介绍
- js实现滚动功能---公告栏
- CSS样式基本属性(标签权重对比)
- Kdevelop的安装与汉化
- 微信公众平台开发(4)--填写服务器配置并验证有效性
- 致友军,宁可食无肉,不可居无竹
- nginx 和dns配置
- wp-setting.php对应文件代码的注释来看
- Java 数据库操作,JDBC学习总结
- 插值算法-克里金法(Java jk3d.jar测试过程)