欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-08 08:34:16
...

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;

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

上一篇:

下一篇: