java—验证springboot配置的自定义规则

btxsgosb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(352)

在我的springboot程序中,我想验证我的配置。
假设我的配置如下:

@Component
@ConfigurationProperties("jms")
public class JmsConfiguration {

  protected String brokerType = "";
  protected String host = "";
  protected String port = "";

}

我知道我可以用 @Validated 用于非常基本检查的注解,例如。

@Component
@ConfigurationProperties("jms")
@Validated
public class JmsConfiguration {

  protected String brokerType = "";
  protected String host = "";

  @Positive
  protected String port = ""; /// must be strictly positive

}

但是我怎样才能做更复杂的检查呢?例如,我如何确保 brokerType 是否 ems 或者 amq 但是没有别的了?
或者更复杂的是,如何确保端口大于1000,如果且仅当 brokerTypeamq (这是个愚蠢的例子)
我试着用 @Constraint 但是我没有成功(但是,我不确定这是做我想做的事情的最好方法…)
谢谢你的帮助
你好,菲利普

at0kjp5o

at0kjp5o1#

这个 brokerType 可以验证为 ems 或者 amq 通过创建 enum 为了它。
Spring @ConfigurationProperties 对枚举具有一流的支持。
请看这里的例子https://www.logicbig.com/tutorials/spring-framework/spring-boot/configuration-properties-vs-value-conversion.html
以上链接的相关示例

@ConfigurationProperties("app")
public class MyAppProperties {
  private int refreshRate;
  private TimeUnit refreshTimeUnit;
  private Currency tradeCurrency;
    .............
}

相关问题