文章目录
- 1. ConfigurationProperties
 - 2. @EnableConfigurationProperties
 - 3. 宽松绑定
 - 4. 常用计量单位
 
- 4.1 时间单位
 - 4.2 空间单位
 
- 5. 数据校验
 - 6. yml 字面值表达方式
 
ConfigurationProperties可以为第三方bean绑定属性
1. ConfigurationProperties
- @ConfigurationProperties 不仅能为自己开发的组件做bean的属性绑定
 
application.yml
servers:
  ipAddress: 192.168.1.1
  port: 1234
  timeout: -1
(prefix = "servers")
public class ServerConfig {
    private String ipAdDress;
    private int port;
    private long timeout;
}public static void main(String[] args) {
    ConfigurableApplicationContext ctx = SpringApplication.run(Sringboot13ConfigurationApplication.class, args);
    ServerConfig bean = ctx.getBean(ServerConfig.class);
    System.out.println(bean);
}
- 还可以为第三方的bean绑定属性

 
public class Sringboot13ConfigurationApplication {
    
    (prefix = "datasource")
    public DruidDataSource dataSource() {
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Sringboot13ConfigurationApplication.class, args);
        ServerConfig bean = ctx.getBean(ServerConfig.class);
        System.out.println(bean);
        DruidDataSource ds = ctx.getBean(DruidDataSource.class);
        System.out.println(ds.getDriverClassName());
    }
}
2. @EnableConfigurationProperties
- @EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入Spring容器管控
 - @ConfigurationProperties 是做具体属性绑定的
 - @EnableConfigurationProperties 是开启属性绑定,并设定对应的目标是谁
 


- @EnableConfigurationProperties与@Component不能同时使用
 解除使用@ConfigurationProperties注释警告

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>3. 宽松绑定
@ConfigurationProperties绑定属性支持属性名宽松绑定

- 官方推荐使用中划线模式,一般常见采用驼峰模式
 宽松绑定不支持注解
@Value引用单个属性的方式
- 绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符
 
4. 常用计量单位
- SpringBoot支持JDK8提供的时间与空间计量单位
 - JDK8支持的时间与空间计量单位
 
4.1 时间单位
- 默认使用毫秒单位




 
4.2 空间单位
- 默认使用 B 为单位

 - 设置 MB 单位



 
结果为:10485760B = 10MB
5. 数据校验
- 开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API
 - 开启Bean数据校验
 
①: 添加JSR303规范坐标与Hibernate校验框架对应坐标
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>②:对Bean开启校验功能

③:设置校验规则


运行后:

在 validation 中也可以看到属性

6. yml 字面值表达方式

- 注意yaml文件中对于数字的定义支持进制书写格式,如需使用字符串请使用引号明确标注
 










