【问题标题】:Spring Boot @ConfigurationProperties, skip @Configuration if not validSpring Boot @ConfigurationProperties,如果无效则跳过@Configuration
【发布时间】:2021-08-26 00:39:26
【问题描述】:

在 Spring Boot 1.5.13 项目中,我有一个带有一些 @NotEmpty 字段的 @Configuration 对象:

@Configuration
@Validated
public class Test {
  @NotEmpty
  private String name;
  private String optionalOne;
  private String optionalTwo;
  @NotEmpty
  private String location;
  ...
}

还有一个从 application.yml 加载它的 @ConfigurationProperties 类:

@ConfigurationProperties(prefix="test.config")
public class TestConfig {
  @Valid
  Map<String, Test> testRecords = new HashMap<>();
  ...
}

配置文件中有几条“测试”记录。

spring 的默认行为是,如果验证失败,例如其中一条记录缺少 location,则错误会阻止应用启动。

我希望行为是记录并跳过无效记录,以便应用继续启动,仅加载有效记录,并且不加载缺少 @NotEmpty 字段的记录。

我怎样才能做到这一点?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    我建议您自己实现验证,无需任何注释。在构建 bean 后,以编程方式检查约束(可能在 @PostConstruct 方法中)以避免与 Spring 发生冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 2016-05-17
      • 1970-01-01
      • 2015-06-17
      • 2018-02-07
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多