博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot使用yaml作为配置文件之坑
阅读量:5959 次
发布时间:2019-06-19

本文共 1841 字,大约阅读时间需要 6 分钟。

hot3.png

背景:最近搞新项目,重新搭建一套基于SpringBoot的开发框架。

查看debug日志,发现很奇怪的一行日志

Skipped (empty) config file 'file:/E:/workspace/union-service/union-service-dao/target/test-classes/application.yml' (classpath:/application.yml)

明明不是空的!怀疑文件名不对,确认并重试了几次,仍然不行,只能调试了。

调试到了PropertySourcesLoader这个类

public PropertySource
load(Resource resource, String group, String name, String profile) throws IOException {if (isFile(resource)) { String sourceName = generatePropertySourceName(name, profile); for (PropertySourceLoader loader : this.loaders) { if (canLoadFileExtension(loader, resource)) { PropertySource
specific = loader.load(sourceName, resource, profile); addPropertySource(group, specific, profile); return specific; } }}return null;}

YamlPropertySourceLoader类的load方法:

@Overridepublic PropertySource
load(String name, Resource resource, String profile) throws IOException {if (ClassUtils.isPresent("org.yaml.snakeyaml.Yaml", null)) { Processor processor = new Processor(resource, profile); Map
source = processor.process(); if (!source.isEmpty()) { return new MapPropertySource(name, source); }}return null;}

查找" org.yaml.snakeyaml.Yaml"类,如果不存在,就返回null。我的项目代码修改倒也简单,添加snakeyaml的依赖即可。

但是SpringBoot代码执行到这里,说明已经存在resource文件,因为没有解析yaml的类跳过去,再去找其他适合的配置文件,也说的过去,可是为啥不能打个日志提示一下粗心又顽强的码农们呢?

感觉修改一下比较好,类似这样:

@Overridepublic PropertySource
load(String name, Resource resource, String profile) throws IOException {if (ClassUtils.isPresent("org.yaml.snakeyaml.Yaml", null)) { Processor processor = new Processor(resource, profile); Map
source = processor.process(); if (!source.isEmpty()) { return new MapPropertySource(name, source); }} else { logger.warn("Found " + name + " while lacking of snakeyaml");}return null;}

相关issue已在github提交给spring boot。

转载于:https://my.oschina.net/bfleeee/blog/879209

你可能感兴趣的文章
生成树
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
用XSLT和XML改进Struts
查看>>
Beta冲刺——day6
查看>>
Comet OJ - Contest #3 题解
查看>>
[网络流24题-9]试题库问题
查看>>
jquery选择器详解
查看>>
C# 保留2位小数
查看>>
使用xshell远程连接Linux
查看>>
杭电ACM1007
查看>>
faster-RCNN台标检测
查看>>
Unix环境高级编程 centos中配置apue编译环境
查看>>
运算符
查看>>
数据结构之各排序算法
查看>>
网页分帧操作<frameset>,<iframe>标签
查看>>
Vue生产环境部署
查看>>
酒店之王
查看>>
html5判断用户摇晃了手机(转)
查看>>
VS下Qt4.8.4安装
查看>>
Linux df命令
查看>>