+-

我正在寻找configurationOnProperty用法,我可以指定考虑多个值,如下所示
例如:@ConditionalOnProperty(value =“test.configname”,havingValue =“value1”或“value2”)
要么
我想知道是否可以指定confiugrationOnProperty条件为havingValue!=“value3”
例如:@ConditionalOnProperty(value =“test.configname”,havingValue!=“value3”)
如果有办法在spring boot配置中实现上述任何一个,请告诉我.
最佳答案
Spring Boot提供了
AnyNestedCondition,用于创建一个在任何嵌套条件匹配时匹配的条件.当所有嵌套条件或没有嵌套条件分别匹配时,它还提供
AllNestedConditions和
NoneNestedConditions用于匹配.
对于您想要匹配值value1或value2的特定情况,您将创建一个AnyNestedCondition,如下所示:
class ConfigNameCondition extends AnyNestedCondition {
public ConfigNameCondition() {
super(ConfigurationPhase.PARSE_CONFIGURATION);
}
@ConditionalOnProperty(name = "test.configname", value = "value1")
static class Value1Condition {
}
@ConditionalOnProperty(name = "test.configname", value = "value2")
static class Value2Condition {
}
}
然后将它与@Conditional一起使用,例如:
@Bean
@Conditional(ConfigNameCondition.class)
public SomeBean someBean() {
return new SomeBean();
}
如嵌套条件注释的javadoc所示(链接到上面),嵌套条件可以是任何类型.它们不需要与这种特殊情况下的所有类型相同.
点击查看更多相关文章
转载注明原文:java – Spring @ConditionalOnProperty havingValue =“value1”或“value2” - 乐贴网