Lorsque vous utilisez la fonctionnalité Spring 3.0 pour annoter une tâche planifiée, je voudrais définir le fixedDelay
paramètre as de mon fichier de configuration, au lieu de le câbler en dur dans ma classe de tâches, comme actuellement ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
Malheureusement, il semble qu'avec les moyens du Spring Expression Language (SpEL) @Value
renvoie un objet String qui à son tour ne peut pas être automatiquement encadré à une valeur longue comme l'exige le fixedDelay
paramètre.
Spring v3.2.2 a ajouté des paramètres String aux 3 paramètres longs d'origine pour gérer cela.
fixedDelayString
,fixedRateString
etinitialDelayString
sont maintenant disponibles aussi.la source
Vous pouvez utiliser l'
@Scheduled
annotation, mais avec lecron
paramètre uniquement:Votre intervalle de 5 secondes peut être exprimé par
"*/5 * * * * *"
. Cependant, si je comprends bien, vous ne pouvez pas fournir une précision inférieure à 1 seconde.la source
Dans Spring Boot 2, nous pouvons utiliser Spring Expression Language (SpPL) pour les
@Scheduled
propriétés d'annotation:Le
application.properties
fichier ressemblera à ceci:C'est tout. Voici un article qui explique en détail la planification des tâches.
la source
Je suppose que vous pouvez convertir la valeur vous-même en définissant un bean. Je n'ai pas essayé cela , mais je suppose qu'une approche similaire à la suivante pourrait vous être utile:
où:
la source
@Scheduled
annotation alors.