文章目录
- 四、yaml的用法
- 4.1 简介
- 4.2 实例演示
- 4.3 让yaml文件自动补齐我们自己的bean
四、yaml的用法
4.1 简介
yaml全称Yeah Another Markup Language.(仍是一种标记语言)。他非常适合用来做以数据为中心的配置文件。
注意:当application.yaml和application.properties两个文件同时存在的时候,SpringBoot会同时加载这两个配置文件。
yaml基本语法:
1、键值对。key: value。(冒号:后边要接一个空格)
2、大小写敏感
3、用缩进表示层级关系
4、缩进不允许使用tab,只允许空格
5、用#表示注释
6、单引号‘’与双引号“”表示字符串内容,其中单引号不会被转义,双引号会被转义
这里说一下单引号和双引号。
1、如果是在单引号中用\n,那么,会直接输出\n
2、如果是在双引号中用\n,那么,会输出换行
数据类型:
- 字面量:单个的,不可再分的值。date、boolean、string、number、null
key: value
- 对象:键值对的组合。map、hash、set、object
key: {key1: value1,key2: value2,key3: value3}
或者用
key:
key1: value1
key2: value2
key3: value3
- 数组:一组按次序排列的值。array、list、queue
key: [value1, value2, value3]
或者用
key:
- value1
- value2
- value3
4.2 实例演示
废话少说,直接代码演示:
先加一个lombok的依赖简化开发。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后写两个bean,一个是Person:
package com.example.springbootdemo.bean;
import lombok.*;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
private String username;
private boolean boss;
private Date birth;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String,Object> score;
private Set<Double> salarys;
private Map<String, List<Pet>> allPets;
}
一个是Pet:
package com.example.springbootdemo.bean;
import lombok.Data;
@Data
public class Pet {
private String name;
private Double weight;
}
然后就可以创建我们的yaml写入数据啦!
该文件我基本上把所有格式都给了。
person:
#String
username: zhangsan
#boolean
boss: true
#Date
birth: 2000/01/01
#Integer
age: 21
#Pet(Object)
#pet: {name: Amy, weight: 9.9}
pet:
name: cat
weight: 9.9
#String[]
#interests: [football, basketball]
interests:
- football
- basketball
#List<String>
#animal: [cat, dog]
animal:
- cat
- dog
#Map<String,Object>
#score: {chinese: 100, math: 100}
score:
chinese: 100
math: 100
#Set<Double>
#salaries: [10000.00, 9999.99]
salaries:
- 10000.00
- 9999.99
#Map<String, List<Pet>>
allPets:
#String
sick:
#List<Pet>
#[{name: dog, weight: 19.99}, {name: bear, weight: 99.99}]
- {name: dog, weight: 19.99}
- name: bear
weight: 99.99
#String
health:
#List<Pet>
#[{name: cat, weight: 9.9}, {name: bird, weight: 3.9}]
- {name: cat, weight: 9.9}
- {name: bird, weight: 3.9}
最后写一个Controller类。
package com.example.springbootdemo.controller;
import com.example.springbootdemo.bean.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class PersonController {
@Resource
Person person;
@RequestMapping("/person")
public Person person(){
return person;
}
}
运行主程序,输入localhost:8080/person。
可以得到person的数据信息如下:(我用yformater插件格式化了一下)
{
"username": "zhangsan",
"boss": true,
"birth": "1999-12-31T16:00:00.000+00:00",
"age": 21,
"pet": {
"name": "cat",
"weight": 9.9
},
"interests": [
"football",
"basketball"
],
"animal": [
"cat",
"dog"
],
"score": {
"chinese": 100,
"math": 100
},
"salaries": [
10000,
9999.99
],
"allPets": {
"sick": [
{
"name": "dog",
"weight": 19.99
},
{
"name": "bear",
"weight": 99.99
}
],
"health": [
{
"name": "cat",
"weight": 9.9
},
{
"name": "bird",
"weight": 3.9
}
]
}
}
会用yaml之后,我们以后就可以使用以下这种格式来配置我们的数据库以及其他的各种配置啦。
4.3 让yaml文件自动补齐我们自己的bean
首先加入我们的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
然后,我们不要让SpringBoot打包我们的这个配置处理器。因为他其实只是对我们的项目起到自动补齐的作用,运行的时候是不需要的。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
然后重新启动我们的主程序文件。
之后我们在写的时候,就会有提示啦!!!