2种取值方式区别是使用@Value注解的属性,必须在配置文件中存在,否则启动检查不通过,会报错导致无法启动。

JAVA类

1, 使用@Value注解方式

@Component
public class AliyunConfig {
    @Value("${oss.accessKeyId}")
    private String accessKeyId;
    @Value("${oss.accessKeySecret}")
    private String accessKeySecret;

    ...
}

2, 使用@ConfigurationProperties注解方式

@ConfigurationProperties(prefix = "oss")
public class AliyunConfig {
    
    private String accessKeyId;
    
    private String accessKeySecret;

    ...
}

配置文件

application-dev.yml

oss:
  accessKeyId: xxxxxx
  accessKeySecret: xxxxxxxxx

@ConfigurationProperties 配置激活方式

1, 增加@Component注解

让 Component Scan 扫描到, 显然当类所在的包被 Spring @ComponentScan 注解扫描到才会生效

2, 通过 Spring 的 Java Configuration 特性实现同样的效果

@Configuration
public class BeanConfig {
    @Bean
    public AliyunConfig aliyunConfig() {
	return new AliyunConfig();
    }
}

3,使用 @EnableConfigurationProperties 注解

让我们的类被 Spring Boot 所知道,在该注解中其实是用了@Import(EnableConfigurationPropertiesImportSelector.class) 实现

@Configuration
@EnableConfigurationProperties(AliyunConfig.class)
public class BeanConfig {

}

@ConfigurationProperties 配置验证

类使用 @Validated注解,在字段上添加 bean validation 注解

@Data
@ConfigurationProperties(prefix = "oss")
@Validated
public class AliyunConfig {
    
    @NotNull private String accessKeyId;
    
    private String accessKeySecret;

    ...
}

相关文章:

  • 2021-12-21
  • 2021-09-10
  • 2021-08-20
  • 2020-10-15
  • 2021-05-21
  • 2021-10-15
猜你喜欢
  • 2022-02-01
  • 2022-12-23
  • 2021-07-21
  • 2022-12-23
  • 2021-10-08
  • 2019-09-08
  • 2021-07-14
相关资源
相似解决方案