三. Yaml 配置文件的基本语法
三.一 基本规则
- 大小写敏感
- 使用缩进表示层级结构
- 缩进时,不使用 TAB 键进行缩进,只允许使用空格。
- 缩进时,不一定要是四个空格键,或者两个空格键,只需要保证同一层次下的元素左对齐就可以了。
- key: value 的值, : 与value 之间,需要有一个空格,进行分隔开来。
- 注释时,用 # 进行注释
三.二 放置基本的常量元素
# 放置基本的元素 name: 两个蝴蝶飞 age: 26 sex: 男 single: true weight: 68.5
三.三 放置对象
# 放置对象 book: name: 陌生人,我送你一首诗 author: 岳泽霖 nickName: 两个蝴蝶飞
三.四 放置数组
# 放置数组 hobby: - 看书 - 写代码 - 写诗 - 写博客
三.五 单引号,双引号
# 放置特殊的字符串 str: desc1: 我是两个蝴蝶\n飞 # 变成: 我是两个蝴蝶\n飞 desc2: "我是两个蝴蝶\n飞" # 会变成: 我是两个蝴蝶 # 飞 desc3: '我是两个蝴蝶\n飞' # 会变成: 我是两个蝴蝶\n飞
字符串,不用加 单引号,或者双引号。
双引号,不会进行转义,将 \n 变成换行回车
单引号,会进行转义, \n 还是\n.
三.六 合理的嵌套使用
book: name: 陌生人,我送你一首诗 author: 岳泽霖 nickName: 两个蝴蝶飞 # 放置数组 hobby: - 看书 - 写代码 - 写诗 - 写博客 info: name: 两个蝴蝶飞 age: 26 sex: 男 single: true weight: 68.5
这样,完全是合法的。
三.七 配置占位符
name2: 老蝴蝶${random.uuid} # 随机生成 uuid age2: ${random.int} # 随机生成int范围内的值,-2^31~2^31-1
三.八 配置引用和默认值
info1: ${book.author} # 引入book对象里面的 author属性 info2: ${book.info:张三} # 引用book对象里面的info属性,如果没有,取:后面的默认值,张三
四. 读取application.yml 里面的配置文件
四.一 构建基本的配置文件读取信息
# 放置基本的元素 name: 两个蝴蝶飞 single: false age: 26 # 放置对象 book: name: 陌生人,我送你一首诗 author: 岳泽霖 score: 0.00 hobby: - 看书 - 写代码 - 写诗 - 写博客 addr: ${book.addr:暂无地址}
四.二 采用 Bean 对象进行接收
在pojo 包下,新创建两个类用于接收数据
四.二.一 SingleInfo 类接收主体对象
@Data public class SingleInfo { private String name; private Boolean single; private Integer age; private String addr; private Book book; }
四.二.二 Book 类接收书籍
@Data public class Book { private String name; private String author; private Double score; private String[] hobby; }
四.三 采用 Spring的 @Value 进行接收
四.三.一 添加组件注解和@Value注解
@Data @Component public class SingleInfo { @Value("${name}") private String name; @Value("${single}") private Boolean single; @Value("${age}") private Integer age; @Value("${addr}") private String addr; //暂时不处理 private Book book; }
四.三.二 测试运行
@SpringBootTest class YamlApplicationTests { @Autowired private SingleInfo singleInfo; @Test void contextLoads() { System.out.println(singleInfo); } }
测试运行:
能够获取到相应的数据。
但是这种方式,需要对属性一个一个的封装。
book 没有添加相应的注解,故输出为 null
四.四 采用 @ConfigurationProperties 进行封装
四.四.一 在SingleInfo 类上面,添加 @ConfigurationProperties 注解
这个注解,一定要记住。 Configuration+Properties ,组成了 @ConfigurationProperties
Idea 提示让打开文档,那就打开文档,目前发现文档链接已经打不开了。
解决方案,添加 spring-boot-configuration-processor 依赖即可。
四.四.二 添加依赖
在 pom.xml 里面,添加 spring-boot-configuration-processor 依赖
<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
添加依赖之后,重启就好了。