目录
- 一、Spring Boot配置文件简介
- 二、properties 配置⽂件说明
- 2.1 properties 基本语法
- 2.2 @value("${}")读取配置⽂件
- 三、yml 配置文件说明
- 3.1 yml 基本格式
- 3.2 yml 配置数据类型 及 读取
- 3.3 yml配置对象及读取@ConfigurationProperties(prefix = "")
- 3.4 配置集合 及读取
- 配置Map及读取

一、Spring Boot配置文件简介
配置⽂件主要是为了解决硬编码(代码写死)带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏.
SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.
很多项⽬或者框架的配置信息也放在配置⽂件中,⽐如:
- 项⽬的启动端
- 数据库的连接信息(包含⽤⼾名和密码的设置)
- 第三⽅系统的调⽤密钥等信息
- ⽤于发现和定位问题的普通⽇志和异常⽇志等.
Spring Boot 配置文件格式:
- application.properties
- application.yml
- application.yaml
说明:
- yml格式是yaml的简写模式。
- properties和yml配置格式可以共存,两个配置取并集,当有冲突(对同一个配置都操作了),以properties为准(properties优先级更高)
- SpringBoot配置文件的文件名默认必须是application,其它名需要自己设置,否则就算有后缀也不会当成是配置文件。
二、properties 配置⽂件说明
2.1 properties 基本语法
基本语法如下:
- properties 是以键值的形式配置的,key 和 value 之间是以"="连接的;
- key的每个单词之间建议使用 点 . 分隔开。
2.2 @value(“${}”)读取配置⽂件
主动的读取配置⽂件中的内容,可以使⽤@Value 注解来实现。@Value 注解使⽤" ${} "的格式读取,在大括号中写配置的key。
package com.example.springioc.controller;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
@Controller
public class USController {
@Value("${my.key}")
private String myKey;
@PostConstruct
public void init() {
System.out.println("my.key = "+myKey);
}
}
注意事项:
- 配置中设置key-value的时候,指不用考虑类型,在我们代码中拿到值的时候会转换成变量的类型。
- 当然有些类型是不会转换成功的,例如当你在配置文件中写了一个字符串,使用int类型来接收就会出错。
- 由于我们每个配置的可以都要写完全,就会导致properties 配置⽂件中会有很多的冗余的信息。
my.key1=1 my.key2=1
如上两个配置的my在properties格式下就不能合并。
三、yml 配置文件说明
3.1 yml 基本格式
基本格式如下:
- 一级,
key: value
key之后的冒号与冒号之后的一个空格都不能省略; - 多级,key的每个单词占一行,并且在单词后面加冒号,且不能出现级数的单词相同不放在一起
- 在同一个级别下面的单词要对准(建议与上一级隔两个空格),不对齐会将同级认为父子级
3.2 yml 配置数据类型 及 读取
对于数据类型只有两个需要特别注意,其它都是直接写
- 一个波浪号代表null
null: ~
- 空字符串,不写或者使用空单引号
empty: ''
对于配置的读取与上面的properties配置读取方法一样使用@value(“${}”),对于不同级别的单词使用点连接。例如上面的配置读取
@value("${spring.datasource.url}")
3.3 yml配置对象及读取@ConfigurationProperties(prefix = “”)
对于类对象的配置,直接用一个两级写法即可,外面单词就是类名,里面的单词就是属性。
person:
name: zhangsan
age: 18
id: 111
对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名。
@Data
@ConfigurationProperties(prefix = "person")
@Configuration
public class Person {
private String name;
private String id;
private Integer age;
private Integer age44;
}
注意事项:
- 注解去配置文件中拿属性的时候是根据属性名字对应的
- 注解只会管类中的属性是否跟配置文件有对应,有就赋值,没有不会报错。
3.4 配置集合 及读取
只需要在上面的语法中,给key赋值value时每个value值用短斜杠加空格即可。例如下面的name就是一个集合。
person:
name:
- zhangsan
- lisi
age: 18
id: 111
对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名,然后属性名对应即可。
package com.example.springioc.model;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Data
@ConfigurationProperties(prefix = "person")
@Configuration("person")
public class Person {
private List<String> name;
private String id;
private Integer age;
private Integer age44;
}
配置Map及读取
配置Map就跟基础语法中配置多级时的一样。
person:
name:
- zhangsan
- lisi
age: 18
id:
id1: 111
id2: 222
id3: 333
对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名,然后属性名对应即可。
package com.example.springioc.model;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
import java.util.Map;
@Data
@ConfigurationProperties(prefix = "person")
@Configuration("person")
public class Person {
private List<String> name;
private Map<String,String> id;
private Integer age;
private Integer age44;
}