2010-12-07 38 views
7

J'ai quelques méthodes annotées avecprintemps @Scheduled injecter temps de retard

@Scheduled(fixedDelay = 6000) 
private void myScheduledMethod(){ 
//do something 
} 

J'ai aussi un ensemble de fichiers de propriétés où je configure les valeurs spécifiques de l'environnement. À des fins de test, j'aimerais que la valeur du délai soit configurable, idéalement à travers une propriété dans un fichier de propriétés. Puisque la valeur de fixedDelay doit être une constante, je cherche un moyen d'obtenir cet ensemble à partir d'un fichier de propriétés, mais je n'ai pas encore trouvé le moyen de le faire.

Répondre

6

Je suis resté bloqué sur les mêmes questions, mais la meilleure façon de résoudre ce serait maintenant:

@Scheduled(fixedDelayString = "${my.delay.property}") 
public void myScheduledMethod(){ 
    // do something 
} 
5

Ce serait bien d'avoir cette option, mais je pense qu'elle n'existe pas (l'annotation est de niveau classe, alors que la valeur serait injectée lors de la création d'une instance). Afin de rendre ceci configurable, utilisez l'espace de noms xml <task:

Comme l'exemple de la spring docs:

<task:scheduled-tasks scheduler="myScheduler"> 
    <task:scheduled ref="someObject" method="someMethod" 
     fixed-delay="${configuredDelay}"/> 
</task:scheduled-tasks>