摘要:@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文件中对于数字的定义支持进制书写格式,如需要使用字符串请使用引号明确标注