西安免费建网站设计打开一个网站
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:日志打印配置。 
