java - Spring @ConditionalOnProperty havingValue = "value1" 或 "value2"
问题描述
我正在寻找configurationOnProperty
可以指定考虑多个值的用法,如下所示
例如:@ConditionalOnProperty(value = "test.configname", havingValue = "value1" or "value2")
或者
我想知道是否可以指定confiugrationOnProperty
条件为havingValue != "value3"
例如:@ConditionalOnProperty(value = "test.configname", havingValue != "value3")
请让我知道是否有办法在spring boot
配置中实现上述任何一项。
解决方案
Spring Boot 提供AnyNestedCondition
了一个在任何嵌套条件匹配时都将匹配的条件。当所有嵌套条件或没有嵌套条件分别匹配时,它还提供AllNestedConditions
and NoneNestedConditions
for 匹配。
对于您想要匹配的值的特定情况,value1
或者value2
您将创建AnyNestedCondition
这样的:
class ConfigNameCondition extends AnyNestedCondition {
public ConfigNameCondition() {
super(ConfigurationPhase.PARSE_CONFIGURATION);
}
@ConditionalOnProperty(name = "test.configname", havingValue = "value1")
static class Value1Condition {
}
@ConditionalOnProperty(name = "test.configname", havingValue = "value2")
static class Value2Condition {
}
}
然后将其与 一起使用@Conditional
,例如:
@Bean
@Conditional(ConfigNameCondition.class)
public SomeBean someBean() {
return new SomeBean();
}
如嵌套条件注释的 javadoc 中所示(链接到上面),嵌套条件可以是任何类型。在这种特殊情况下,它们不需要都属于同一类型。
推荐阅读
- docker - Nexus 私有 docker pull 映像失败并出现 x509:无法验证证书错误
- java - dlopen() 中的 BUS_ADRERR
- reactjs - 使用react和redux删除后如何重新渲染相同的组件?
- android - 如何将 alpha 测试的更新 APK 链接到生产 apk
- python - 如何在 Python 中逐字节修改十六进制字符串?
- hibernate - 如何修复 Hibernate 在 Java 中复制布尔字段
- ios - 根据部分更改选定的单元格图像
- android - 文件资源检查是红色的,尽管 R 有效
- c# - 直接转换返回 InvalidCastException
- c# - Kusto client failed to send a request to the service: Request headers must contain only ASCII characters