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不动。运行看结果有乱码:

 

 解决乱码: 

 

 

结果:

 

 







 

posted @ 2020-10-08 13:46  圣金巫灵  阅读(280)  评论(0编辑  收藏  举报