Quel est le but de @ConditionalOnProperty annotation?
je viens de modifier la configuration du démarrage à ressort, et j'ai rencontré
@ConditionalOnProperty(prefix = "spring.social.", value = "auto-connection-views")
org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration
@Bean(name = { "connect/twitterConnect", "connect/twitterConnected" })
@ConditionalOnProperty(prefix = "spring.social.", value = "auto-connection-views")
public View twitterConnectView() {
return new GenericConnectionStatusView("twitter", "Twitter");
}
je ne comprends pas le but de cette annotation. Je suppose que cela pourrait être permis d'utiliser la fève seulement si la valeur de la propriété existe (par exemple " ressort.sociale", "l'auto-connexion-vues").
3 réponses
l'annotation est utilisée pour créer conditionnellement un grain de printemps en fonction de la configuration d'une propriété. Dans l'usage que vous avez montré dans la question la fève ne sera créée que si le spring.social.auto-connection-views
la propriété existe et a une valeur autre que false
. Cela signifie que, pour ce View
haricot d'être créé, vous devez définir l' spring.social.auto-connection-views
propriété et il doit avoir une valeur autre que false.
vous pouvez trouver de nombreuses autres utilisations de cette annotation tout au long de la botte de printemps base de code. Un autre exemple est la suivante:
@ConditionalOnProperty(prefix = "spring.rabbitmq", name = "dynamic", matchIfMissing = true)
public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
notez l'utilisation de matchIfMissing
. Dans ce cas, le AmqpAdmin
bean sera créé si le spring.rabbitmq.dynamic
propriété existe et a une valeur autre que false
ou la propriété n'existe pas du tout. Cela rend la création de la fève opt-out plutôt que l'exemple de la question de l'opt-in.
dans le cas où vous utilisez cette propriété au niveau du TYPE, c'est-à-dire sur l'une de vos classes @Configuration... Gardez à l'esprit que dans ce cas l'annotation est évaluée/vérifiée par rapport au fichier de propriétés par défaut, i.e. application.properties
@ConditionalOnProperty sur le TYPE de niveau w/ @Configuration
c'est Plutôt le contraire. Une condition préalable à la mise en œuvre de la méthode, si la propriété est fixée dans l'Environnement (Développement, approbation, production) et est la vraie valeur avec la méthode peut être exécutée.
Si la propriété n'est pas définie dans l'environnement d'annotation pas empêché l'exécution de la méthode.