全局配置文件
Spring Boot默认使用的全局配置文件有application.properties和application.yml,Spring Boot启动时会自动读取这两个文件中的配置,如果文件中存在与默认自动配置相同的配置信息,则覆盖默认的配置信息。
application.properties配置文件
application.properties文件中可以定义Spring Boot项目的相关属性,属性可采用键值对格式进行设置,表示形式为“Key=Value”,这些相关属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义的属性。例如:
address=beijing
server.port=80
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
如果需要配置的属性为对象的属性,可以通过“对象名.属性名”的方式指定属性的键。
user.username=lisi
user.age=18
application.properties文件中的属性支持多种类型,常见的有字面量、数组和集合。
字面量类型属性
字面量是指单个的不可拆分的值,例如:数字、字符串、布尔值等。
在默认情况下字符串是不需要使用单引号或双引号进行修饰的。
address=beijing
age=13
数组类型属性
配置数组类型属性时,可以将数组元素的值写在一行内,元素值之间使用逗号(,)间隔,也可以在多行分别根据索引赋值。
# 方式一
user.hobby=swim,travel,cook
# 方式二
user.hobby[0]=swim2
user.hobby[1]=travel2
user.hobby[2]=cook2
集合类型属性
List
# 配置List:方式一
user.subject=Chinese,English,Math
# 配置List:方式二
user.subject[0]=Chinese
user.subject[1]=English
user.subject[2]=Math
Set
# 配置Set
user.salary=120,230
Map
# 配置Map方式一
user.order.1001=cookie
user.order.1002=cake
# 配置Map方式二
user.order[1001]=cookie
user.order[1002]=cake
Spring Boot提供的属性及它们的默认值
使用application.properties
1.使用springbootstarter创建项目,选择web依赖
2.创建子包domain,在该包下创建类Pet和Person
public class Pet {private String type;private String name;//无参构造方法//getter 、setter//toString补上}
@Component// 用于将Person类作为Bean注入到Spring容器中
@ConfigurationProperties(prefix = "person") // 将配置文件中以person开头的属性注入到该类中
public class Person {private int id; //idprivate String name; //名称private List hobby; //爱好private String[] family; //家庭成员private Map map;private Pet pet; //宠物//无参构造方法//getter 、setter//toString补上
}
3.在配置文件中自动提示属性
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>
更新工程:在项目上右键 maven-->update project...
target/classes/META-INF 下会生成文件 spring-configuration-metadata.json。
4. application.properties中自定义属性
##对实体类对象Person进行属性配置
person.id=1
person.name=tom
person.hobby=play,read,sleep
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=kity
5.查看配置效果
@SpringBootTest
class Chapter02ApplicationTests {@Autowiredprivate Person person;@Testvoid contextLoads() {System.out.println(person);}
}
application.yml 配置文件
概念
YAML文件格式是Spring Boot支持的一种JSON超集文件格式。
application.yml配置文件是使用 YAML编写的文件,YAML是”YAML Ain't Markup Language“的递归缩写。YAML通常用于表示数据结构和配置信息,它使用缩进和外观依赖的方式表示层级关系,使得配置文件和数据结构的表达相对简洁和易于阅读。
YAML支持的数据包括列表、键值对和字符串、数字等。
YAML文件的后缀名为.yml或.yaml,编写时需要遵循如下规则。
使用缩进表示层级关系。
缩进时不允许使用Tab 键,只允许使用空格。
缩进的空格数不重要,但同级元素必须左侧对齐。
大小写敏感。
语法
key:(空格)value,使用缩进控制层级关系
如果需要配置的属性为对象的属性,配置的方式有缩进式和行内式两种。
# 缩进式
consumer:username: lisiage: 18
# 行内式
consumer: {username: lisi,age: 18}
字面量类型属性
默认情况下字符串是不需要使用单引号或双引号的。
server:port: 8081path: /hello
数组类型和单列集合属性
person:hobby: [play,read,sleep]
consumer:hobby:- play- read- sleep
Map集合或对象
person:map: {k1: v1,k2: v2}
consumer:order:1001: cookie1002: cake
配置文件存放位置和优先级
Spring Boot 启动时会扫描以下5个位置的application.properties和application.yml文件,并将扫描到的文件作为Spring Boot 的默认配置文件。
file:./config/*/
file:./config/
file:./
classpath:/config/
classpath:/
上述5个位置下如果都存在application.properties和application.yml文件,在项目启动时都会被加载。加载多个application.properties或application.yml文件时,文件中的配置会根据文件所处的位置划分优先级,优先级规则如下。
上述位置1~位置5的优先级依次降低,序号越小优先级越高。
位于相同位置的application.properties的优先级高于application.yml,application.yml的优先级高于application.yaml。
存在相同的配置内容时,高优先级的内容会覆盖低优先级的内容。
存在不同的配置内容时,高优先级和低优先级的配置内容取并集。