2. SpringBoot 配置
2.1 配置文件类型
- 配置文件用于修改 SpringBoot 的默认配置。
2.1.1 properties 文件
-  **properties ** 是属性文件后缀。 
-  文件名:application.properties 
-  只能保存键值对。 
-  基础语法:key=value name=why
-  注入配置类 @Component // 声明为 Spring 组件 @PropertySource(value = "classpath:config.properties") public class Person {@Value("${name}")private String name; }需要在 IDEA 的 settings --> FileEncodings 中设置编码格式为 UTF-8。  
2.1.2 yaml 文件
-  yaml 是一个可读性高,用来表达数据序列化的格式。 
-  文件名:application.yml 或 application.yaml 
-  能保存键值对、对象和表达式。 
-  基础语法:key: 空格 value # 键值对 name: why# 对象 student:name: whyage: 20student: {name: why,age: 20}# 数组 pets: - cat- dog- pigpets: [cat,dog,pig]# 表达式 dog:name: ${siri:siri}_旺财
-  注入配置类 -  导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional> </dependency>
-  映射到类 @Component // 声明为 Spring 组件 @ConfigurationProperties(prefix = "person") // 映射配置文件的值到组件 public class Person {...}
 
-  
2.1.3 配置注入比较
| @ConfigurationProperties | @Value | |
|---|---|---|
| 功能 | 批量注入配置文件中的属性 | 指定注入配置文件中的属性 | 
| 松散绑定 | √ | × | 
| SpEL | √ | √ | 
| JSR303 数据校验 | √ | × | 
| 复杂类型封装 | √ | × | 
(1) 松散绑定
-  yaml 文件中的 dog-name 可以为类中的 dogName 赋值 dog:dog-name: 富贵dog-age: 3@Component @ConfigurationProperties(value = "dog") public class Dog {private String dogName;private Integer dogAge; }
(2) JSR303数据校验
● 检查属性的数据格式。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>
person:email: 123456
@Component  // 声明为 Spring 组件
@Validated  // 数据格式校验
@ConfigurationProperties(prefix = "person") // 映射配置文件的值到组件
public class Person {@Email(message = "邮箱格式错误")private String email;
}
检查结果:default message [邮箱格式错误];
● 数据格式检查常用注解
Maven:jakarta.validation:jakarta.validation-api:2.0.2
| 注解 | 作用类型 | 解释 | 
|---|---|---|
| @NotNull | 任何类型 | 属性不能为null | 
| @NotEmpty | 集合 | 集合不能为null,且size大于0 | 
| @NotBlanck | 字符串、字符 | 字符类不能为null,且去掉空格之后长度大于0 | 
| @AssertTrue | Boolean、boolean | 布尔属性必须是true | 
| @Min | 数字类型(原子和包装) | 限定数字的最小值(整型) | 
| @Max | 同@Min | 限定数字的最大值(整型) | 
| @DecimalMin | 同@Min | 限定数字的最小值(字符串,可以是小数) | 
| @DecimalMax | 同@Min | 限定数字的最大值(字符串,可以是小数) | 
| @Range | 数字类型(原子和包装) | 限定数字范围(长整型) | 
| @Length | 字符串 | 限定字符串长度 | 
| @Size | 集合 | 限定集合大小 | 
| @Past | 时间、日期 | 必须是一个过去的时间或日期 | 
| @Future | 时期、时间 | 必须是一个未来的时间或日期 | 
| 字符串 | 必须是一个邮箱格式 | |
| @Pattern | 字符串、字符 | 正则匹配字符串 | 
2.2 配置文件路径
2.2.1 路径优先级
-  优先级从高到低排序 -  file为项目目录,classpath为资源目录,即resources(1) file:./config/(2) file:./(3) classpath:/config/(4) classpath:/
 
-  
2.2.2 多环境配置
- 整合线上、测试或者其他用途的环境配置。
properties 文件
-  application.properties spring.profiles.active=test
-  application-test.properties server.port=8081
-  application-dev.properties server.port=8082
yaml 文件
-  application.yml server:port: 8080 spring:profiles: test --- server:port: 8081 spring:profiles: test --- server:port: 8082 spring:profiles: dev
2.3 配置文件内容
- 配置文件中的内容都基于 xxxAutoConfiguration绑定并装配的xxxProperties类。- 开发者编写配置文件,给 xxxProperties类属性赋值。
- xxxAutoConfiguration使用- xxxProperties类属性修改配置默认值。
 
- 开发者编写配置文件,给 
- 配置文件 --> xxxProperties-->xxxAutoConfiguration--> 修改配置默认值
2.4 总结
-  SpringBoot 启动会加载大量自动配置类, 
-  检查 SpringBoot 默认的自动配置类中是否含有所需配置组件,若没有则需手动添加。 
-  手动添加组件时,SpringBoot 从 Properties 类中获取某些属性,在配置文件中指定这些属性的值即可实现自动装配。 
-  xxxAuotoConfiguration:自动配置类; xxxProperties:封装配置文件的相关属性; xxx.yml:为属性赋值,完成配置。 
-  debug: ture:日志打印配置。