摘要:@ConfigurationProperties;松散绑定;常用计量单位@DurationUnit @DataSizeUnit;数据校验
3.2 高级配置
第三方bean属性绑定
@ConfigurationProperties不仅可以给自定义类绑定属性,也可以为第三方bean绑定属性
引入第三方配置的依赖之后,
创建对应的配置类
| 1 | //设置成一个bean 受spring容器管理 | 
ConfigurationProperties注解可以将配置文件中的配置信息注入到添加了该注解的类当中
前提要加上 prefix 指定是哪一个配置信息
| 1 | datasource: | 
@EnableConfigurationProperties
注解可以将使用@ConfigurationProperties注解对应的类加入到Spring容器中
此时添加有@ConfigurationProperties注解的类不能再使用 @Component定义bean(自定义的类作为bean,就需要使用注解Component)
@Component 和 @EnableConfigurationProperties这两个注解不能同时使用
| 1 | 
 | 
松散绑定
对于boot来说,主推的绑定第三方或者自定义的类,使用的注解是@ConfigurationProperties
对应的配置文件使用的属性命名格式一般可以为驼峰,下划线连接,烤肉串模式,常量模式,标准的模式是烤肉串模式
ip-address-name 烤肉串模式
@ConfigurationProperties(prefix = 默认全部写小写)
@Value 注解不支持松散绑定
常用计量单位@DurationUnit @DataSizeUnit
SprinBoot支持JDK8提供的时间与空间计量单位
时间 Duration类型
添加注解可以设置具体的计量单位 @DurationUnit(ChronoUnit.xxx)
| 1 | 
 | 
| 1 | 
 | 
| 1 | servers: | 
打印的结果是 :ServerConfig(ipAddress=com.ylxstudy, port=2223, timeout=-1,serverTimeout=PT1H)
空间 DataSize类型
| 1 | 
 | 
| 1 | servers: | 
打印结果为:ServerConfig(ipAddress=com.ylxstudy, port=2223, timeout=-1, serverTimeout=PT1H, dataSize=10485760B)
数据校验
开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API
- 添加JSR303规范坐标与Hibernate校验框架对应坐标(Hibernate作为实现类实现JSR303接口) - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- <!--导入JSR303规范--> 
 <dependency>
 <groupId>javax.validation</groupId>
 <artifactId>validation-api</artifactId>
 </dependency>
 <!--使用Hibernate框架提供的校验器做实现类-->
 <dependency>
 <groupId>org.hibernate.validator</groupId>
 <artifactId>hibernate-validator</artifactId>
 </dependency>
- 开启Bean校验功能  - 1 
 2
 3
 4
 5
 public class ServerConfig{}
- 设置校验规则   - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 public class ServerConfig {
 private String ipAddress;
 
 private int port;
 private long timeout;
 
 private Duration serverTimeout;
 //空间 数据容量 DataSize类型
 
 private DataSize dataSize;
 }- 设置配置文件中对应的属性的值为9999,超过最大值8888 - 打印结果为:  
进制数据转换规则
注意yaml文件中对于数字的定义支持进制书写格式,如需要使用字符串请使用引号明确标注
