0
点赞
收藏
分享

微信扫一扫

SpringBoot高级配置



文章目录

  • ​​1. ConfigurationProperties​​
  • ​​2. @EnableConfigurationProperties​​
  • ​​3. 宽松绑定​​
  • ​​4. 常用计量单位​​
  • ​​4.1 时间单位​​
  • ​​4.2 空间单位​​
  • ​​5. 数据校验​​
  • ​​6. yml 字面值表达方式​​


ConfigurationProperties可以为第三方bean绑定属性


1. ConfigurationProperties

  • @ConfigurationProperties 不仅能为自己开发的组件做bean的属性绑定

application.yml

servers:
ipAddress: 192.168.1.1
port: 1234
timeout: -1
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAdDress;
private int port;
private long timeout;
}
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Sringboot13ConfigurationApplication.class, args);
ServerConfig bean = ctx.getBean(ServerConfig.class);
System.out.println(bean);
}

SpringBoot高级配置_数据校验

  • 还可以为第三方的bean绑定属性
    SpringBoot高级配置_spring_02
@SpringBootApplication
public class Sringboot13ConfigurationApplication {

@Bean
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource dataSource() {
DruidDataSource ds = new DruidDataSource();
return ds;
}

public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Sringboot13ConfigurationApplication.class, args);
ServerConfig bean = ctx.getBean(ServerConfig.class);
System.out.println(bean);
DruidDataSource ds = ctx.getBean(DruidDataSource.class);
System.out.println(ds.getDriverClassName());
}

}

SpringBoot高级配置_计量单位_03

2. @EnableConfigurationProperties

  • @EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入Spring容器管控
  • @ConfigurationProperties 是做具体属性绑定的
  • @EnableConfigurationProperties 是开启属性绑定,并设定对应的目标是谁

SpringBoot高级配置_spring boot_04

SpringBoot高级配置_计量单位_05

  • @EnableConfigurationProperties与@Component不能同时使用
  • 解除使用@ConfigurationProperties注释警告

    SpringBoot高级配置_数据校验_06

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

3. 宽松绑定

  • @ConfigurationProperties绑定属性支持属性名宽松绑定

    SpringBoot高级配置_spring_07

  • 官方推荐使用中划线模式,一般常见采用驼峰模式
  • 宽松绑定不支持注解​​@Value​​引用单个属性的方式

    SpringBoot高级配置_spring_08

  • 绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符

4. 常用计量单位

  • SpringBoot支持JDK8提供的时间与空间计量单位
  • JDK8支持的时间与空间计量单位

4.1 时间单位

  • 默认使用毫秒单位
    SpringBoot高级配置_数据校验_09
    SpringBoot高级配置_数据校验_10
    SpringBoot高级配置_spring boot_11
    SpringBoot高级配置_SpringBoot高级配置_12

4.2 空间单位

  • 默认使用 B 为单位
    SpringBoot高级配置_SpringBoot高级配置_13
  • 设置 MB 单位
    SpringBoot高级配置_SpringBoot高级配置_14
    SpringBoot高级配置_SpringBoot高级配置_15
    SpringBoot高级配置_spring boot_16

结果为:10485760B = 10MB

5. 数据校验

  • 开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API
  • 开启Bean数据校验

①: 添加JSR303规范坐标与Hibernate校验框架对应坐标

<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>

<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>

②:对Bean开启校验功能

SpringBoot高级配置_SpringBoot高级配置_17

③:设置校验规则

SpringBoot高级配置_数据校验_18

SpringBoot高级配置_数据校验_19

  • 运行后:

    SpringBoot高级配置_SpringBoot高级配置_20

  • 在 validation 中也可以看到属性

    SpringBoot高级配置_数据校验_21

6. yml 字面值表达方式

SpringBoot高级配置_spring_22

  • 注意yaml文件中对于数字的定义支持进制书写格式,如需使用字符串请使用引号明确标注


举报

相关推荐

0 条评论