springboot实用开发

本文介绍了SpringBoot中如何进行第三方Bean的属性绑定,以及如何利用@ConfigurationProperties和@Component注解配合实现配置类的注入。同时,展示了启用@ConfigurationProperties的注意事项,即不能与@Component同时使用。此外,还详细讲解了Bean属性的校验过程,包括引入JSR303规范、使用@Validated注解以及设置属性校验规则。通过这些步骤,可以确保Bean属性的有效性和正确性。

第三方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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值