Springboot的全局配置文件分为两种

  • application.properties
  • application.yml或者application.yaml

当两种同时存在的时候,以.properties配置文件为准

application.properties(默认的配置文件)

  • 语法:key=value
    在这里插入图片描述

application.yml配置文件

  • 语法:K:(空格)V 标识一对键值对,以空格的缩进来控制层级关系只要是左对齐的一列数据,都是同一层级的
    在这里插入图片描述
  • yaml
    AML (YAML Ain’t a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,以数据为中心。是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。

yaml其它数据类型值的写法:

  • 普通值:
    k: v 字面量直接来写,字符串默认不用添加单引号或者双引号

" " 双引号不会转义字符串里面的特殊字符

student:
  name: "zhang \n san" # 输出zhang 换行 san

''单引号会转义字符,特殊字符最终是一个普通的字符串

student:
  name: 'zhang \n san' # 输出zhang \n san
  • 对象写法
# 定义一个学生对象   
studnet:
  name: 晓明
  age: 18
# 对象的行内写法
student: {name: 晓明, age: 18}
  • map写法
map: 
  k1: v1
  k2: v2
  #{k1:v1,k2:v2}
  • 数组写法
Animal:
  - dog
  - pig
  - cat
# 数组的行内写法
Animal: [dog, pig, cat]

属性绑定

编写一个Teach类

@Data
public class Teach {
    private String name;
    private Integer age;
    private Date birthday;
    private Boolean boss;
    private Map<String, String> map;
    private List<Student> studentList;
    private Car car;
}

@Data
public class Student {
    private String name;
    private Integer age;
}

@Data
public class Car {
    private String brand;
    private String colour;
}

application.yml配置内容

teach:
  name: 王教授
  age: 38
  birthday: 2023/08/28
  boss: false
  map:
    k1: v1
    k2: v2
    #{k1:v1,k2:v2}
  studentList:
    - name: 赵四
      age: 20
    - name: 王二
      age: 23
  car:
    brand: 法拉利
    colour: 黑色
  • 将yaml配置文件的内容映射到Teach类上面
@Data
@Component
@ConfigurationProperties(prefix = "teach")
public class Teach {
    private String name;
    private Integer age;
    private Date birthday;
    private Boolean boss;
    private Map<String, String> map;
    private List<Student> studentList;
    private Car car;
}
  • 测试
@SpringBootTest
public class SpringbootApplicationTest {

    @Resource
    private Teach teach;

    @Test
    public void test01(){
        System.out.println(teach);
    }
}

运行结果:
在这里插入图片描述

application.properties配置内容

teach.name=张教授
teach.age=35
teach.birthday=2023/08/28
teach.boss=false

teach.map.k1=v1
teach.map.k2=v2

teach.studentList.[0].name=张三
teach.studentList.[0].age=25

teach.studentList.[1].name=李四
teach.studentList.[1].age=25

teach.car.brand=宝马
teach.car.colour=黑色

注意:当yml配置文件跟.properties同时存在会以.properties为准

  • @ConfigurationProperties:默认是从全局配置文件中获取值,也就application.yml这个文件中获取值。如果做的配置很多,全局的配置文件就会特别大,为了方便管理。我会创建不同的配置文件定向管理不同的配置,这就会用到下面的注解
  • @PropertySource:加载指定配置文件
  1. 在项目resource目录下创建一个teach.peoperties的配置文件
teach.name=李老师
teach.age=25
  1. 在代码上指定加载teach.peoperties配置文件
@Data
@Component
@ConfigurationProperties(prefix = "teach")
@PropertySource(value = "classpath:teach.properties")
public class Teach{
    private String name;
    private Integer age;
    .....
 }
  1. properties下中文会出现了乱码,在idea配置文件中进行如下配置即可:properties中文读取乱码:File->Settings->FileEncodings最底部选utf-8、Tranparent打上勾在这里插入图片描述
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐