一尘不染

如何在使用@ConditionalOnProperty或@ConditionalOnExpression时检查两个条件

spring

创建bean时,我需要检查YAML属性文件上是否满足两个条件。@ConditionalOnProperty注释仅支持一个属性,该怎么办?


阅读 591

收藏
2020-09-27

共2个答案

一尘不染

因为从一开始@ConditionalOnProperty就可以检查多个属性。名称/值属性是一个数组。

@Configuration
@ConditionalOnProperty({ "property1", "property2" })
protected static class MultiplePropertiesRequiredConfiguration {

    @Bean
    public String foo() {
        return "foo";
    }

}

对于带有AND检查的简单布尔属性,您不需要@ConditionalOnExpression

2020-09-27
一尘不染

使用@ConditionalOnExpression注释和SpEL表达式,如http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html所述。

例:

@Controller
@ConditionalOnExpression("${controller.enabled} and ${some.value} > 10")
public class WebController {
2020-09-27