解析SpringBoot中配置文件(.yml/.yaml)

解析SpringBoot中配置文件(.yml/.yaml)

springBoot配置文件的加载有先后顺序为:
1.application.yml
2.application.yaml
3.application.properoties
后加载的会把先加载的给覆盖掉

#普通数据的配置
#注意:冒号之后一定要有空格
name: zhangsan

#对象的配置
#注意:yml文件是通过空格来区分层级关系的,同一层级的位置一定要对应
person:
    name: zhangsan
    age: 18
    addr: beijing
#行内对象的配置,行内对象的配置冒号后也要有空格
person: {name: zhangsan,age: 18.addr: beijing}

#配置数据、集合(配置普通字符串),记得中间加空格
city:
  - beijing
  - tianjin
  - shanghai
  - chongqing
#或者是行内配置
city: [beijing,tianjin,shanghai,chongqing]

#配置对象数据,一个 - 代表一个对象
person:
  - name: tom
    age: 18
    addr: beijing
  - name: lucy
    age: 17
    addr: shanghai
#或者是行内配置
person: [{name: tom,age: 18,addr: beijing},{name: lucy,age: 17,addr: shanghai}]

#配置Map集合
map:
  key1: value1
  key2: value2

如何获取yml中的配置信息:
1.通过@Value注解进行获取
优点:可以精确找到配置
缺点:如果层级太深,编写比较繁琐

@RestController
public class Demo2Controller {

    @Value("${name}")
    private String name;

    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/getMsg")
    public String getMsg(){

        return "name:"+name+" "+"addr:"+addr;
    }
}

2.通过@ConfigurationProperties编写配置类进行注入

@ConfigurationProperties(prefix = "person")
@Component
public class Config {
private String name;
private String addr;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAddr() {
    return addr;
}

public void setAddr(String addr) {
    this.addr = addr;
}
}

获取配置文件的信息:

@RestController
public class Demo3Controller {

    @Autowired
    private Config config;

    @RequestMapping("/getMsg1")
    public String getMsg(){
        String name = config.getName();
        String addr = config.getAddr();
        return "name:"+name+" "+"addr:"+addr;
    }
}

可以看到Config配置文件上方会报错:
这个就是报错信息
此报错信息说明程序中缺少执行器,不会影响程序的运行,但是可以研究一下
点开之后会发现:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

添加该依赖之后,是为了方便在.yml中编写配置文件的时候会有提示,提高效率的

猜你喜欢

转载自blog.csdn.net/weixin_43794897/article/details/84500983