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
,用于创建一个在任何嵌套条件匹配时匹配的条件.当所有嵌套条件或没有嵌套条件分别匹配时,它还提供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,javabeans,spring,spring-boot-2 来源: https://codeday.me/bug/20190722/1500200.html