Je dois vérifier que deux conditions sont remplies sur un fichier de propriétés YAML, lors de la création d'un bean. Comment puis-je faire cela, comme @ConditionalOnProperty
l'annotation ne prend en charge qu'une seule propriété?
Utilisation @ConditionalOnExpression
annotation et expression SpEL comme décrit ici http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html .
Exemple:
@Controller
@ConditionalOnExpression("${controller.enabled} and ${some.value} > 10")
public class WebController {
Depuis le début de @ConditionalOnProperty
il était possible de vérifier plus d'une propriété. L'attribut nom/valeur est un tableau.
@Configuration
@ConditionalOnProperty({ "property1", "property2" })
protected static class MultiplePropertiesRequiredConfiguration {
@Bean
public String foo() {
return "foo";
}
}
Pour les propriétés booléennes simples avec un ET, vous n'avez pas besoin d'un @ConditionalOnExpression
.
Vous pourriez être intéressé par la classe abstraite AllNestedConditions
introduite dans Spring Boot 1.3.0. Cela vous permet de créer des conditions composites où toutes les conditions que vous définissez doivent s'appliquer avant tout @Bean
sont initialisés par votre @Configuration
classe.
public class ThisPropertyAndThatProperty extends AllNestedConditions {
@ConditionalOnProperty("this.property")
@Bean
public ThisPropertyBean thisProperty() {
}
@ConditionalOnProperty("that.property")
@Bean
public ThatPropertyBean thatProperty() {
}
}
Ensuite, vous pouvez annoter votre @Configuration
comme ça:
@Conditional({ThisPropertyAndThatProperty.class}
@Configuration