![微服务分布式架构基础与实战:基于Spring Boot + Spring Cloud](https://wfqqreader-1252317822.image.myqcloud.com/cover/390/31186390/b_31186390.jpg)
1.7 【实例】使用YAML配置文件
1.7.1 实例背景
本实例将使用application.yml资源配置文件替代application.properties资源配置文件,并对照properties文件编写存储相同数据的YAML文件。
1.7.2 原properties文件
在application.properties资源配置文件中输入其他格式的数据,目的是了解在Spring Boot的配置文件中,无论YAML文件还是properties文件,都能存储除Spring Boot预定义参数外的自定义参数,通过如@Value、@ConfigurationProperties、@EnableConfigurationProperties等相关注解从资源配置文件中提取自定义参数。
在下述代码中org.zfx.boot.date能在Java代码中获取并转换成List。org.zfx.boot.date参数的配置也更能体现YAML文件和properties文件的书写区别。
原application.properties文件代码如下。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_39_1.jpg?sign=1739282875-diGJP2rS5zZR6HSMJ2F31Owqbhpi0dhX-0-68566c0fc43ec6f260f8daae50c7f775)
1.7.3 转换格式后的YAML文件
将原appliaction.properties文件转换成application.yml文件后,application.yml文件代码如下。在下述代码中,zfx前有2个空格,boot前有4个空格,another前有6个空格,以此类推。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_39_2.jpg?sign=1739282875-bY6De27zkthNgMO51hJxfErfdRhoekN8-0-e00e6683c6b276f16f6765769c3931e8)
假设org是一个对象,则org对象含有zfx对象,zfx对象含有boot对象,boot对象含有another对象、book对象、List<String>date(或List<int>date、List<Date>date)对象。
1.7.4 实例易错点
1.YAML文件不能用TAB键缩进
YAML文件一定要用2*n空格来书写,若用TAB键则会报以下错误。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_39_3.jpg?sign=1739282875-B9ej6L45xB9bzOwctx97zLZhBl6DXtwl-0-8ec796d335d6b2bc9f8f41ad467b77bf)
2.YAML文件空格过多或过少
YAML文件每个参数前一定要用2*n个空格来书写,若多一个空格或少一个空格则会报以下错误。
![](https://epubservercos.yuewen.com/C493B8/16896238005622406/epubprivate/OEBPS/Images/38413_40_1.jpg?sign=1739282875-WGDMThQbMHKbHlGhN46gbC05pBTzlZS1-0-af3aa749d638bc7f25acea81f6c938b0)