+-
java – Spring @ConditionalOnProperty havingValue =“value1”或“value2”
我正在寻找configurationOnProperty用法,我可以指定考虑多个值,如下所示

例如:@ConditionalOnProperty(value =“test.configname”,havingValue =“value1”或“value2”)

要么

我想知道是否可以指定confiugrationOnProperty条件为havingValue!=“value3”

例如:@ConditionalOnProperty(value =“test.configname”,havingValue!=“value3”)

如果有办法在spring boot配置中实现上述任何一个,请告诉我.

最佳答案
Spring Boot提供了 AnyNestedCondition,用于创建一个在任何嵌套条件匹配时匹配的条件.当所有嵌套条件或没有嵌套条件分别匹配时,它还提供 AllNestedConditionsNoneNestedConditions用于匹配.

对于您想要匹配值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” - 乐贴网