第三方bean属性绑定

@SpringBootApplication
//@EnableConfigurationProperties(ServerConfig.class)写这个之后,该配置类不能再注入bean @Conponent
public class Springboot13ConfigurationApplication {
@Bean
public DruidDataSource dataSource(){
DruidDataSource ds=new DruidDataSource();
ds.setDriverClassName("com.mysql.cj.jdbc.Driver123");
return ds;
}
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Springboot13ConfigurationApplication.class, args);
ServerConfig bean = ctx.getBean(ServerConfig.class);
System.out.println(bean);
DruidDataSource bean1 = ctx.getBean(DruidDataSource.class);
System.out.println(bean1.getDriverClassName());
}
}
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAddress;
private int port;
private long timeout;
@DurationUnit(ChronoUnit.HOURS)
private Duration serverTimeout;
//@DataSizeUnit(DataUnit.MEGABYTES)
private DataSize dataSize;
}
以后使用springboot会经常出现注解@EnableConfigurationProperties(perfix={ServerConfig.class})

注意: @EnableConfigurationProperties(perfix={ServerConfig.class})不能和@Component同时使用
bean属性校验
第一步导入相关坐标
<!--导入JSR303规范 接口-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!--使用hibernate框架提供校验器做实现类-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
第二步:类上开启bean属性的校验@Validated
第三步:对应属性设置具体的规则
@Component
@Data
@ConfigurationProperties(prefix = "servers")
//2.开启对当前bean属性的校验
@Validated
public class ServerConfig {
private String ipAddress;
//3.设置具体的规则
@Max(value = 8888,message = "最大值不能超过8888")
private int port;
private long timeout;
@DurationUnit(ChronoUnit.HOURS)
private Duration serverTimeout;
//@DataSizeUnit(DataUnit.MEGABYTES)
private DataSize dataSize;
}
本文介绍了SpringBoot中如何进行第三方Bean的属性绑定,以及如何利用@ConfigurationProperties和@Component注解配合实现配置类的注入。同时,展示了启用@ConfigurationProperties的注意事项,即不能与@Component同时使用。此外,还详细讲解了Bean属性的校验过程,包括引入JSR303规范、使用@Validated注解以及设置属性校验规则。通过这些步骤,可以确保Bean属性的有效性和正确性。
598

被折叠的 条评论
为什么被折叠?



