SpringBoot中properties和yml的区别

SpringBoot中properties和yml的区别,第1张

1.properties文件中是以“或迟.”进行分割的,在yml中使用“:”进行分割;

2.properties文件通过“=”赋值,yml的数据格式类似json,通过“:”赋值,值前面需要加一个空格;yml文件缩进最好用空格;

3.properties只支持键值对,yml配置文件支持列表,短横线表示列表“-”;

4.properties不保证加载顺序,yml有先后困枝顺序。

使用@Value注解的配置文件可以放在四个位置:

外置,在相对于应用程序运行目录的/congfig子目录里汪团敏。

外置,在应用程序运行的目录里

内置,在config包内

内置,在Classpath根目录

此外,如果你在相同优先级位置同时有properties和yml,那么properties里面的属性就会覆盖里yml的属性

YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑纯陵识别的的数据数据序列化格祥搭式,并且容易被人类阅读,容易和脚本语言交互的,可以被谨裤拿支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。

最常见的两种

接下来要讲的几种case要用到如下的yml文件

application.yml

application1.yml

借助Spring提供的一个类,org.springframework.core.env.Environment, 它继承了PropertyResolver, 所以可以当作属性解析器使用

Spring提供了YamlPropertiesFactoryBean可以读取自定义配置yml文件,不再拘泥于application.yml及其激活的其他配置文件

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

解决方式: 配合PropertySourcesPlaceholderConfigurer使用,它实现了BeanFactoryPostProcessor接口,也就是一个bean工厂后置处理器的实现,可以将配置文数洞件的属性值加载到一旦毕颂个Properties文件中。模郑使用方法如下:

除了使用YamlPropertiesFactoryBean将yml解析成Properties外,其实我们还可以使用YamlMapFactoryBean解析yml成为Map

使用snakeYml,需要引入依赖

使用方式:

使用jackson,需要引入依赖

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

jackson还可以生成yml文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12247053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存