java - 验证 Springboot 配置的自定义规则
问题描述
在我的 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,如果且仅当brokerType
是amq
(愚蠢的情况,但它是示例)
我尝试使用@Constraint
但没有成功(但是,我不确定这是做我想做的最好的方法......)
感谢帮助
问候,菲利普
解决方案
brokerType
可以验证为ems
或者通过为它amq
创建一个enum
。
Spring@ConfigurationProperties
对枚举有一流的支持。
相关示例来自上面的链接
@ConfigurationProperties("app")
public class MyAppProperties {
private int refreshRate;
private TimeUnit refreshTimeUnit;
private Currency tradeCurrency;
.............
}
推荐阅读
- javascript - 防止 Angular Web 组件监听 shadow DOM 之外的 keydown 事件
- python - 使用 pydub 访问 ffprobe
- java - 传递包含空格的争论的Java运行时问题?
- javascript - d3中的水平分割条形图
- amazon-web-services - 带有 BitBucket 源的 AWS CodePipeline
- kotlin - 如何将此代码更改为 kotlin 以查看来自 firebase 数据库的 pdf
- python - 如何向上搜索目录?我可以 os.walk 向上到文件系统的根目录吗?
- google-cloud-platform - e2 媒体的购买承诺
- node.js - NodeJS Express 无法在 https 上下载文件
- python - Pygame 和 pygame.time.wait() 函数以一种奇怪的方式工作