SpringBoot实用开发之Bean属性配置详解
第三方bean的绑定
- 使用注解@ConfigureProperties(prefix=“配置文件中属性的前缀”)绑定第三方Bean
例如:
@Component
@Data
@ConfigurationProperties(prefix = "serverss")
public class Server {
private String port;
private String ipadress;
private String timeout;
}
- 使用@EnableConfigureProperties注解,也可以实现绑定属性,通过设置被绑定类来实现
@EnableConfigurationProperties(Server.class)
- **注意:**使用@EnableConfigureProperties注解时应当取消被绑定类中的@Comment注解,否则spring运行时会检测到两个Bean,相当于一个Bean加载了两次
Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.example.Server' available: expected single matching bean but found 2: server,serverss-com.example.Server
松散绑定
- 配置文件中,属性名称可以自由书写,不需要区分大小写,通常使用的是“烤肉串模式”,即:ip-adress;
serverss:
port: 8520
ip-adress: 192.168.0.1
timeout: 100
- 在被绑定类中,prefix属性名称统一使用小写字母,大写字母将会报错。
- 错误示范:
@ConfigurationProperties(prefix = "serVerss")
**注意的是:**使用@Value注解时,不能使用松散绑定,属性名称必须与配置文件中的一模一样
计量单位
- Duration 时间的计量单位
- 默认单位是秒
- 使用@DurationUnit(ChronoUnit.HOURS)注解可以修改时间单位,使用ChronoUnit类进行单位的选择
- DataSize 存储大小的计量单位
- 默认单位是B
- @DataSizeUnit(DataUnit.KILOBYTES)注解修改存储大小的单位,使用DataUnit修改存储空间的大小
数据校验
- 数据校验使用的java提供的Validation接口,
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
- 还需要添加validation接口实现的规范
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>7.0.1.Final</version>
</dependency>
- 在需要使用数据校验的类上方添加@Validete注解,开启数据校验@Validated
@Component
@Data
@Validated
@ConfigurationProperties(prefix = "serverss")
public class Server {
@Max(value = 8,message = "最大值不能超过8")
private String port;
private String ipadress;
private String timeout;
@DurationUnit(ChronoUnit.HOURS)
private Duration duration;
@DataSizeUnit(DataUnit.KILOBYTES)
private DataSize dataSize;
}
进制转换规则
- SpringBoot配置文件中如何使用int类型的配置,开头是0,例如0127,SpringBoot处理时,将转成87添加在属性中,则SpringBoot将该类型按照八进制进行处理,这时需要添加双引号进行转成字符串
- SpringBoot配置文件中,String类型可以直接输入,也可以添加双引号出入
2022-07-24 18:01:45 星期日