ConfigurationProperties可以为第三方bean绑定属性
1. ConfigurationProperties
- @ConfigurationProperties 不仅能为自己开发的组件做bean的属性绑定
application.yml
servers:
ipAddress: 192.168.1.1
port: 1234
timeout: -1
@Component
@Data
@ConfigurationProperties(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绑定属性
@SpringBootApplication
public class Sringboot13ConfigurationApplication {
@Bean
@ConfigurationProperties(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 是开启属性绑定,并设定对应的目标是谁
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
3. 宽松绑定
4. 常用计量单位
- SpringBoot支持JDK8提供的时间与空间计量单位
- JDK8支持的时间与空间计量单位
4.1 时间单位
4.2 空间单位
结果为:10485760B = 10MB
5. 数据校验
①: 添加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文件中对于数字的定义支持进制书写格式,如需使用字符串请使用引号明确标注
|