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

文章目录

  • 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.validationgroupId>
            <artifactId>validation-apiartifactId>
        dependency>

        <dependency>
            <groupId>org.hibernate.validatorgroupId>
            <artifactId>hibernate-validatorartifactId>
        dependency>

使用@Validated注解给这个Bean开启数据校验功能。
然后可以在对应的成员变量上面写限制范围了。

@Max(value = 8888,message = "最大值不可以超过8888")
    private int port;

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

你可能感兴趣的:(#,后端(旧),spring,boot,java,spring)