@ConditionalOnProperty conditionnellement œuvres
J'ai le code suivant:
@Scheduled(cron = "${cron.foo.bar}")
@ConditionalOnProperty(name="cron.foo.bar.enabled", relaxedNames = false)
public void parseFooBar() {
... blah blah blah ...
}
Dans mon fichier de propriétés, j'ai:
cron.foo.bar=1 * * * * ?
cron.foo.bar.enabled=false
Cela ne fonctionne pas, et parseFooBar est exécuté à chaque minute sur la 1ère seconde.
Cependant, si j'ajoute champ:
@Value("${cron.foo.bar.enabled}")
private String enabledProp;
afin que je puisse faire un journal et de voir ce qu'il est, parseFooBar ne soit PAS exécutée. Retrait de la Chaîne injectée une fois de plus, voit parseFooBar exécuter. Ce que je fais mal?
Edit: C'est à l'aide de Printemps 4.1.5, le Printemps de Démarrage 1.2.1, et JDK 8
Edit 2: le déplacement de l'annotation de type fonctionne également. (sans avoir à forcer la @Valeur). Mais l'annotation est à la fois une Méthode et une annotation de Type? Il me donne un peu plus de flexibilité pour le faire sur la méthode...
OriginalL'auteur Jeff Wang | 2015-05-06
Vous devez vous connecter pour publier un commentaire.
Une condition dans le Framework Spring est utilisé pour contrôler si oui ou non un composant est inscrit dans le contexte de l'application. À partir de la javadoc de
@Conditional
:Lorsque la condition est déclaré sur
parseFooBar
il n'a pas d'effet car il n'est pas un@Bean
méthode. Elle fonctionne comme prévu lorsque vous déclarez le type qu'il fait ensuite le composant conditionnelle, telle qu'il n'est pas inscrit dans le contexte de l'application lorsque la propriété n'est pas vérifiée.OriginalL'auteur Andy Wilkinson