第九篇:SpringBoot 配置高级 ConfigurationProperties注解 宽松绑定/松散绑定 常用计量单位绑定 数据校验

ConfigurationProperties

  1. 使用@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);

  1. 也可以给已有的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;

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花花叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值