Beanの作成中に、YAMLプロパティファイルで2つの条件が満たされていることを確認する必要があります。 @ConditionalOnProperty
アノテーションがサポートするプロパティは1つだけなので、どうすればよいですか?
使用する @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 {
@ConditionalOnProperty
の初めから、複数のプロパティをチェックすることが可能でした。 name/value属性は配列です。
@Configuration
@ConditionalOnProperty({ "property1", "property2" })
protected static class MultiplePropertiesRequiredConfiguration {
@Bean
public String foo() {
return "foo";
}
}
ANDチェックを使用した単純なブール型プロパティの場合、@ConditionalOnExpression
は必要ありません。
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