2016-03-15 104 views

回答

3

您可能會對Spring Boot 1.3.0中引入的AllNestedConditions抽象類感興趣。這使您可以在任何@Bean@Configuration類別初始化之前創建複合條件,其中您定義的所有條件都必須應用。

public class ThisPropertyAndThatProperty extends AllNestedConditions { 

    @ConditionalOnProperty("this.property") 
    @Bean 
    public ThisPropertyBean thisProperty() { 
    } 

    @ConditionalOnProperty("that.property") 
    @Bean 
    public ThatPropertyBean thatProperty() { 
    } 

} 

然後你就可以註釋你的@Configuration這樣的:

@Conditional({ThisPropertyAndThatProperty.class} 
@Configuration 
0

通過使用兩個屬性@ConditionalOnExpression一起解決了這個問題。

@ConditionalOnExpression("'${com.property1}${com.property2}'=='value1value2'") 

其中配置屬性值如下。

屬性1 名稱 - com.property1 價值 - value1

屬性2 名稱 - com.property2 價值 - 這裏http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html描述value2

+2

怎麼樣''$ {com.property1} =='value1'和$ {com.property2} =='value2'「'? – Navrocky

2

使用@ConditionalOnExpression註釋和規劃環境地政司表達。

實施例:

​​
4

由於從@ConditionalOnProperty的開始,有可能來檢查多個屬性。名稱/值屬性是一個數組。

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

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

} 

對於具有AND檢查的簡單布爾屬性,您不需要@ConditionalOnExpression。