1.概念
在Springboot的项目中,配置文件有以下几种格式:
- Application.properties
- Application.yaml
- Application.yml
其中官方推荐我们使用yaml的格式(因为能表示的数据类型很多样)
 
 
2.基本语法
# yaml形式的配置文件
# 普通的key-value(分号之后有空格)
name: sun
# 对象类型
student:
  name: sun
  age: 18
# 对象类型的行内写法
people: {name: sun,age: 20}
# 数组
pet:
  - cat
  - dog
  - pig
    
# 数组类型的行内写法
pets: [cat,dog,pig]3.给属性赋值
在没有使用yaml之前,我们给对象类型赋值有两种方式:
- 使用构造方法/set方法
- 在Spring中交给IOC赋值
下面来展示下使用Spring的注解来赋值:
Address类:
@Component
public class Address {
    @Value("陕西")
    private String province;
    @Value("西安")
    private String city;
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}User类:
@Component
public class User {
    private String name;
    private Integer age;
    private Address address;
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}
springboot的测试类:
@SpringBootTest
class SpringbootWebQuickstartApplicationTests {
    @Autowired
    Address address;
    @Test
    void contextLoads() {
        System.out.println(address);
    }
}结果:

使用yaml配置文件格式来进行属性赋值,如下:
application.yaml:
user:
  name: java
  age: 20
  address:
    province: 广州
    city: 深圳在User类上添加:
@ConfigurationProperties(prefix = "user")将这个User类和指定的yaml文件绑定,并且将属性一一对应
- 有个注意点:prefix属性的值必须要符合规范,即首字母小写
4.松散绑定
上面说了,yaml文件和实体类中的属性会一一对应,那么当两者的属性名不一致的时候,还能完成映射吗?
- yaml配置文件支持松散绑定,即当实体类中的属性名是用驼峰命名法来命名的,yaml文件中的属性是用中划线 "-" 或者下划线 "_" 来命名的,这样也能完成对应
Address实体类:
@Component
@ConfigurationProperties(prefix = "address")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Address {
    private String provinceName;
    private String city;
}yaml文件:
address:
  province_name: 江苏
  city: 南京结果:







![[环境配置]ssh连接报错“kex_exchange_identification: read: Connection reset by peer”](https://img-blog.csdnimg.cn/img_convert/4fdcb21f62feda4e197867c0bda7eeeb.png)












