创建需要配置的对象:
@Data
@ToString
public class Pet {
private String name;
private Double weight;
}
@Data
@ToString
@Component
@ConfigurationProperties(prefix = "person")
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;
}
application.yml中Person对象对应配置如下:
person:
userName: ganbo
boss: false
birth: 2020/01/31
age: 17
pet:
name: 阿猫阿狗
weight: 88.88
# interests: [篮球,足球,排球] #List,set,map,array,queue都有两种方式一种是这种行模式直接数组[],一种是下面的“-”方式
interests:
- 篮球
- 足球
- 排球
- 棒球
animal: [ 阿猫,"阿狗" ]
# score: [english:80,math:90]
score:
english: 80
match: 100
# salarys: [100.1,100,200]
salarys:
- 100
- 200
- 500
allPets:
sick:
- { name: 阿狗, weight: 100 }
- name: 阿猫
weight: 88
- name: 啊猪
weight: 300
health:
- {name: 阿花, weight: 999.1}
- {name: 阿明, weight: 199.99}
创建一个测试借口进行测试:
@RestController
public class HelloWorldController {
@Autowired
private Person person;
@GetMapping("hello")
public Person hello() {
return person;
}
}
其他注意点:
1:spring boot 的配置文件后缀名可以是三种: application.yml、applicaton.yaml、application.properties 。 其中后缀名yaml和yml效果一样,一般简写yml,平时一般使用application.yml简洁。
2:配置文件中配置List、Set、Map、Array、Queue 这些集合类型对象的时候都有两种方式:一种是直接行模式,一种是key换行后“-”元素方式,也可以同时使用,比如上面的“allPets属性里面”
3:关于里面配置的value是否打引号的问题:
- 如果value里面没有转义字符:不打引号,打单引号,双引号效果都一样。
- 如果有转义字符比如: ganbo \n root . 这个时候如果配置单引号内容比如: name: 'ganbo \n root' 或者 name"ganbo \n root" 单引号会将 \n 作为字符串输出,双引号会将\n作为换行输出(注意是作为控制台输出的情况下才会看到效果)。