编程语言
首页 > 编程语言> > java – Spring @ConditionalOnProperty havingValue =“value1”或“value2”

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,javabeans,spring,spring-boot-2
来源: https://codeday.me/bug/20190722/1500200.html