当前位置:网站首页 > 编程语言 > 正文

yml文件怎么读(yml文件怎么写)



原创:微信公众号 ,欢迎分享,转载请保留出处。

在上一篇文章中,我们从源码角度分析了SpringBoot解析yml配置文件的全流程,那么我们今天就来点实战,总结一下除了烂大街的和外,还能够通过哪些方式,来读取yml配置文件的内容。

在Spring中有一个类,它可以被认为是当前应用程序正在运行的环境,它继承了接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下:

 

使用起来也非常简单,直接使用就可以注入到要使用的类中,然后调用它的方法就可以根据属性名称取出对应的值了。

 

在上面的例子中可以看到,除了简单的获取外,提供的方法还可以对取出的属性值进行类型转换、以及默认值的设置,调用一下上面的接口,打印结果如下:

 

除了获取属性外,还可以用来判断激活的配置文件,我们先在中激活文件:

 

可以通过方法来检测某一个配置文件是否被激活加载,或者通过方法拿到所有被激活的配置文件。测试接口:

 

打印结果:

 

在Spring中还可以使用来读取自定义配置的yml文件,而不用再被拘束于及其激活的其他配置文件。

在使用过程中,只需要通过方法设置自定义yml配置文件的存储路径,再通过方法获取对象,后续就可以通过它获取具体的属性,下面看一个例子:

 

查看运行结果,可以读取指定的的内容:

 

但是这样的使用中有一个问题,那就是只有在这个接口的请求中能够取到这个属性的值,如果再写一个接口,不使用读取配置文件,即使之前的方法已经读取过这个yml文件一次了,第二个接口取到的仍然还是空值。来对这个过程进行一下测试:

 

先调用一次接口,再调用接口时会打印值:

 

想要解决这个问题也很简单,可以配合使用,它实现了接口,也就是一个bean工厂后置处理器的实现,可以将配置文件的属性值加载到一个文件中。使用方法如下:

 

再次调用之前的接口,结果如下,可以正常的取到中的属性:

 

除了使用将yml解析成外,其实我们还可以使用解析yml成为,使用方法非常类似:

 

打印结果:

 

在上篇介绍原理的文章中,我们知道SpringBoot是通过监听事件的方式来加载和解析的yml文件,那么我们也可以仿照这个模式,来加载自定义的配置文件。

首先,定义一个类实现接口,监听的事件类型为,并在构造方法中传入要解析的yml文件名:

 

自定义的监听器中需要实现接口的方法,当监听到事件时会被触发:

 

上面的代码中,主要实现了:

  • 获取当前环境,当事件被触发时,已经完成了的装载,并且能够通过事件获取
  • 通过加载、解析配置文件
  • 将解析完成后的添加到中

修改启动类,在启动类中加入这个监听器:

 

在向中添加前加一个断点,查看环境的变化:

执行完成后,可以看到配置文件源已经被添加到了环境中:

启动完成后再调用一下接口,查看结果:

 

能够正确的取到配置文件中的值,说明自定义的监听器已经生效。

前面介绍的几种方式,在Spring环境下无需引入其他依赖就可以完成的,接下来要介绍的在使用前需要引入依赖,但是同时也可以脱离Spring环境单独使用。先引入依赖坐标:

 

准备一个yml配置文件:

 

在使用解析yml时,最常使用的就是、、方法,这三个方法可以加载yml文件或字符串,最后返回解析后的对象。我们先从基础的方法开始演示:

 

运行上面的代码,打印Map中的内容:

 

接下来看一下方法,它可以用来加载yml中使用连接符连接的多个文档,将上面的yml文件进行修改:

 

在添加了连接符后,尝试再使用方法进行解析,报错如下显示发现了另一段yml文档从而无法正常解析:

这时候修改上面的代码,使用方法:

 

执行结果如下:

 

可以看到,方法返回的是一个对象的迭代,里面的每个对象对应yml中的一段文档,修改后的yml文件就被解析成了两个独立的Map。

接下来再来看一下方法,它可以在yml解析过程中指定类型,直接封装成一个对象。我们直接复用上面的,在解析前先创建两个实体类对象用于接收:

 

下面使用方法加载yml,注意方法的第二个参数,就是用于封装yml的实体类型。

 

查看执行结果:

 

实际上,如果想要将yml封装成实体对象,也可以使用另一种方法。在创建对象的时候,传入一个指定实体类的构造器对象,然后直接调用方法就可以实现:

 

执行结果与上面相同:

 

SnakeYml其实实现了非常多的功能,这里就不一一列举了,有兴趣的小伙伴可以自己查看一下文档。如果你看了上一篇的文章后跟着翻阅了一下源码,那么你会发现,其实在SpringBoot的底层,也是借助了SnakeYml来进行的yml的解析操作

相比大家平常用jackson比较多的场景是用它来处理json,其实它也可以用来处理yml,使用前需要引入依赖:

 

使用jackson读取yml也非常简单,这里用到了常用的,在创建对象时指定使用工厂,之后就可以简单的将yml映射到实体:

 

运行结果:

 

如果想要生成yml文件的话,可以调用的方法实现:

 

查看生成的yml文件,可以看到jackson对字符串类型严格的添加了引号,还在文档的开头添加了yml的链接符。至于其他jackson读写yml的复杂功能,大家可以在工作中自己去探索使用。

本文介绍了5种读取yml配置文件的方式,前3种依赖于Spring环境,而和则可以脱离环境独立使用,可以说它们是对和注解使用的补充。这几种方法的使用场景不同,也各有各的有优点,各自具备一些特殊的用法,而我们在工作中更多情况下,要根据具体的用途进行一种方案的选取或多种的搭配使用。

好了,希望这篇实战能够帮助到大家,我是Hydra,我们下篇再见。

作者简介,码农参上,一个热爱分享的公众号,有趣、深入、直接,与你聊聊技术。个人微信DrHydra9,欢迎添加好友,进一步交流。

到此这篇yml文件怎么读(yml文件怎么写)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 手机蓝牙地址不可用是什么意思(手机蓝牙地址不可用是什么意思呀)2025-03-20 08:18:05
  • pass 平台(pass平台和sass平台)2025-03-20 08:18:05
  • 网页聊天代码怎么用(网页聊天系统源码)2025-03-20 08:18:05
  • 本机信息怎么查看vivo(本机信息怎么查看)2025-03-20 08:18:05
  • udp广播会造成网络堵塞吗(udp广播会造成网络堵塞吗知乎)2025-03-20 08:18:05
  • 做网站代码(网站代码示例)2025-03-20 08:18:05
  • 程序员从哪开始学(程序员从哪开始学比较好)2025-03-20 08:18:05
  • 易梯认证码(易梯认证码分享截图)2025-03-20 08:18:05
  • 接口500错误(接口报500是什么错误)2025-03-20 08:18:05
  • 安卓 划词翻译(划词翻译插件)2025-03-20 08:18:05
  • 全屏图片