ConfigurationProperties
使用@ConfigurationProperties给第三方Bean配置属性
se: ipAddress: 192.168.0.1 port: 8080 timeout: -1
将这个Bean加载到Spring容器中,然后使用@ConfigurationProperties给第三方Bean注入属性值。
@Component @Data @ConfigurationProperties(prefix = "se") public class ServiceConfig { private String ipAddress; private String port; private long timeout; }
ConfigurableApplicationContext context = SpringApplication.run(Springboot12NewconfigurationApplication.class, args); ServiceConfig bean = context.getBean(ServiceConfig.class); System.out.println(bean);
也可以给已有的Bean绑定属性值。
datasource: driverClassName: 123
@Bean 这个注解就是将return对象存放到Spring容器中。
@Bean @ConfigurationProperties(prefix = "datasource") public DataSource dataSource() { DruidDataSource ds = new DruidDataSource(); return ds; }
DruidDataSource ds = context.getBean(DruidDataSource.class); System.out.println(ds.getDriverClassName()); 补充:@EnableConfigurationProperties(ServiceConfig.class)
这个注解就是说明一个哪一个bean要配置属性值,并且在使用这个注解的时候,是不可以使用@Compent这个属性的,因为@EnableConfigurationProperties这个注解已经包含了将bean对象扔到Spring容器中了。
宽松绑定/松散绑定
一句话,就是配置文件中的值,可以忽略大小写等内容,但是prefix的值必须是小写的。
常用计量单位绑定
关于时间大小和空间大小的单位绑定。
se: ipAddress: 192.168.0.1 port: 8080 timeout: -1 serverTimeOut: 3 dataSize: 2
@DurationUnit(ChronoUnit.DAYS) private Duration serverTimeOut ; @DataSizeUnit(DataUnit.MEGABYTES) private DataSize dataSize;
数据校验
如何给Bean做他对应的属性校验
就是给Bean注入属性的时候,就会遇到手滑现象,就是定义的是int类型,但是手滑写的是Sting类型,或者说是int类型的数据范围是1111-8888,但是手滑写成了9999,所以这时候就需要进行数据校验。
需要导入两个坐标 第一个坐标是一个接口,第二个坐标是一个实现类
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency>
使用@Validated注解给这个Bean开启数据校验功能。
然后可以在对应的成员变量上面写限制范围了。
@Max(value = 8888,message = "最大值不可以超过8888") private int port;