yml & @ConfigurationProperties
sprintboot有全局的配置文件,名字是固定的
application.properties
application.yml
yml语法:
k:(空格)v 表示一对键值对
以空格的缩进来控制层级关系, 只要左对齐的一列数据,都是同一个层级的
字面量: 数字,字符串,布尔
server:
port: 8082
字符串默认不加单双引号
对象的下一行写对象和属性的值
frends:
lastName: zhangsan
age: 20
或者对象的行内写法
frend: {lastName: lisi, age: 90}
数组:
list:
- cat
- pig
- dog
或者行内写法
list1:[a, b, c]
@ConfigurationProperties(prefix = "person") 将配置文件中的每个属性的值,映射到这个组件中
ConfigurationProperties : 告诉sprintboot将本类中的所有属性和配置文件中相关的配置进行绑定
(prefix = "person") :配置中哪个进行映射
代码:
@Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private List<Object> list; private Map<String,Object> map; private Dog dog;
yml:
person: lastName: zhangsan age: 22 boss: false birth: 2015/1/1 list: - c - d map: a: y b: z dog: name: 小狗 age: 2
这个对象就在容器中了,查看结果:
@Autowired
Person person;
以上是yml的语法配置
在application.properties里:
person.lastName = lisi person.age = 1 person.birth=2020/1/1 person.boss=false person.map.k1=1 person.map.k2=2 person.list=1,2,3 person.dog.name=小狗 person.dog.age=3
@ConfigurationProperties 和@Autowired不动。运行看结果有乱码:
解决乱码:
结果: