SpringBoot配置文件–yaml用法
一.基本语法
- key: value (ps:key和value之间是必须要有空格的)
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格 (ps:用idea开发时,用tab好像也没有太大影响)
- 缩进空格数不重要,只要相同层级元素左对齐即可
- #表示注释
- ‘’与“” ,单引号和双引号表示字符串内容分别表示 转义 和不转义
二.数据类型
- 字面量: 单个的、不可再分的值。如date,boolean,String,number,null
key: value
- 对象:键值对的集合。如map、hash、set、object
行内写法:
k: {k1: v1,k2: v2,k3: v3}
或用如下写法:
k:
k1: v1
k2: v2
k3: v3
- 数组:一组按次序排列的值。如array、list、queue
行内写法:
k: [v1,v2,v3]
或用如下写法:
k:
- v1
- v2
- v3
三.示例
以下有一个Person类对象,使用配置文件的方式,给对象赋值。
@ConfigurationProperties(prefix = "person") //让组件同配置文件中的key值为person相绑定
@Component //在容器中创建一个组件
@Data
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;
}
@Data
public class Pet {
private String name;
private Integer age;
}
现在通过yaml文件来配置Person对象的值,yaml配置文件后缀可以用.yaml或者是.yml。
person:
username: 李四
boss: false
birth: 1997/12/9
age: 25
# 行内写法:
# interest: [羽毛球,游泳]
interest:
- 羽毛球
- 游泳
animal: [猫猫,狗狗]
score:
english: 80
math: 100
# 行内写法:
# score: {english:80,中文:100}
salary:
- 9999
- 8888
pet:
name: 崽崽
age: 3
allPets:
stick:
- {name:狗二}
- {name:狗三,age:1}
health: [{name:兔二,age:5}]
编写测试的Control类,该类是返回配置类实例对象person的值。
@RestController
public class HelloController {
@Autowired
private Person person;
@RequestMapping("/person")
public Person returnPerson(){
return person;
}
}
在网页中输入http://localhost:8080/person,可看到输出内容。
在测试过程中,可能会报如下ava.nio.charset.MalformedInputException: Input length = 1错误。可能是因为yaml配置文件中语法有问题,或者是中文编码存在问题。解决方法可点击该链接查看
四.Idea使用yaml便利技巧
使用idea编写yaml时,不做任何配置的情况下,yaml文件中只有springboot原生配置才会有提示。自己编写的东西写入yaml时是不会有提示的,且在对应类中会有如下提示:
我们可以在pom.xml文件中导入以下依赖,添加后要记得重新编译
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
编译成功后,在yaml中编写代码时就会有提示了
该依赖只是优化编写,对实际运行于业务功能无关。所以将项目打包成jar包时,可以添加如下配置,即不打包该依赖类。