当前位置: 首页 > 知识库问答 >
问题:

Spring Boot@ConfigurationProperties,如果无效,则跳过@Configuration

龙令
2023-03-14

在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;
  ...
}

以及从应用程序加载它的@ConfigurationProperties类。yml:

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

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

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

相反,我希望记录并跳过无效记录,以便应用程序继续启动,只加载有效记录,不加载缺少@NotEmpty字段的记录。

我怎样才能做到这一点?

共有1个答案

诸龙野
2023-03-14

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

 类似资料:
  • 我的财产包括: 我的申请。属性,如: 测试是: 故障原因: 我尝试过很多事情,比如: 添加SpringBootTest将PropertySource替换为 TestPropertySource测试属性源 Spring开机版本为:2.2.2。释放 有人有主意吗?

  • 我正在Intellij(最新)中使用TestNG运行器运行测试。我不使用自定义的testng.xml文件。 类a:不包含实际测试,只包含和注释方法,用于设置我想在实际测试类中使用的静态变量。 类B:包含一个注释测试方法。 我的问题是:似乎没有。为什么? 谢谢!

  • 我在尝试执行此代码时遇到以下错误。 java.lang.IllegalArgumentException:在“com.app.aggregatorappaconfiguration”上找不到ConfigurationProperties注释。在org.springframework.util.assert.NotNull(assert.java:115)~[spring-core-4.3.2.re

  • 查看图像以供参考。 我是Java的初学者。

  • 在采集的使用中我们为采集项,设置了过滤项后,有的时候会出现无效的情况。也就是采集出来的结果并没有按我们的想像的把过滤项给删除了。这是为什么呢? 如下面的一个例子,我们在过滤项中进行如下的设置: ../down.php?uri=[|] 他的意思是要把“../down.php?uri=”给过滤掉。可采集出来的结果很不近人意。并没有把这个字符串给过滤掉。这是为什么呢? PHPCMS V9的采集

  • 问题内容: 我正在寻找一种基本上告诉angular如果与表达式匹配的话跳过ng-repeat中的项目的方法; 在控制器中: 现在,在我的模板中,我想向所有人显示不匹配的人。我认为它必须是过滤器,所以我设置了一个Plunkr来玩,但没有任何运气。Plunkr尝试 问题答案: 正如@Maxim Shoustin所)建议的,实现所需目标的最佳方法是使用自定义过滤器。 但是还有其他方法,其中一种方法是在放