Task Scheduling mit Spring
Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.
Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.
Das Task Scheduling mit Spring muss einmalig mit der Annotation @EnableScheduling
aktiviert werden,
das ist bereits durchgeführt in einer Konfigurationsklasse des Bausteins isy-task
.
Dadurch wird implizit einer der Spring Scheduler genutzt.
Die Geschäftsanwendung zeichnet eine beliebige Methode einer Klasse aus als "durch einen Task auszuführenden Code" durch das Setzen der Annotation @Scheduled.
Die Parameter der Annotation legen fest, wie genau Tasks eingeplant und ausgeführt werden.
public class ExampleTasks {
@Scheduled(fixedDelay = 1000)
public void scheduleTaskWithFixedDelay() {
// ...
}
@Scheduled(fixedRate = 1000)
public void scheduleTaskWithFixedRate() {
// ...
}
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void scheduleTaskWithFixedRateAndInitialDelay() {
// ...
}
@Scheduled(cron = "0 15 10 15 * ?")
public void scheduleTaskWithCronExpression() {
// ...
}
}
Der größte Vorteil des Ansatzes von Spring ist die Einfachheit der Verwendung für die Entwicklung. Diesen Vorteil nutzt der Baustein Task Scheduling vollständig aus, indem er sich nahtlos in diesen Ansatz integriert.
Mehr Informationen zu dem Thema finden sich in der Dokumentation über Task Scheduling von Spring sowie in der Dokumentation über die Annotationen zum Scheduling des Spring Frameworks. |
1. Erweiterung des Task Scheduling
Der Spring Scheduler stösst die Ausführung des Tasks an.
Der Baustein Task Scheduling nutzt Spring AOP und @AspectJ-Annotationen, um vor und nach der Ausführung von Methoden mit der Annotation @Scheduled
eigenen Code auszuführen.
Hierzu wird ein Around Advice verwendet.
Dieser ist dafür zuständig:
-
die integrierten Bausteine der IsyFact zur Ausführung des Tasks zu initialisieren,
-
die eigentliche mit
@Scheduled
annotierte Methode aufzurufen, -
Aufräumarbeiten zu erledigen, sodass die Verarbeitung des Tasks sauber beendet werden kann,
-
das Ergebnis der mit
@Scheduled
annotierten Methode zurückzugeben.
Mehr Informationen zu Around Advices (und zu Spring AOP) finden sich in der Dokumentation des Spring Frameworks. |
Neben dem Advice gibt es für jeden Task eine eigene Konfiguration sowie eine globale Konfiguration mit Standardwerten für alle Tasks. Hierüber lassen sich die integrierten IsyFact-Bausteine und der Task selbst konfigurieren.
Alle genannten Fähigkeiten des Bausteins Task Scheduling konfigurieren sich per Spring Autokonfiguration selbst, sobald die Bibliothek zum Baustein in eine Anwendung integriert wird. Für die Umsetzung eines Tasks gemäß IsyFact wird somit benötigt:
-
die Einbindung der IsyFact-Bibliothek zum Task Scheduling,
-
eine mit
@Scheduled
annotierte Methode, -
eine globale Konfiguration für alle Tasks,
-
(optional) eine Task-spezifische Konfiguration.
2. Einmalig ausgeführte Tasks
Das Task Scheduling von Spring fokussiert sich auf mehrfach ausgeführte Tasks. Einmalig ausgeführte Tasks unterstützt es nicht. Hier springt der Baustein Task Scheduling ein und ermöglicht es, Tasks genau einmal auszuführen, ohne die Vorteile der Integration der IsyFact in das Task Scheduling zu verlieren.
Dazu definiert der Baustein die Annotation @OnceTask
.
Die Tasks müssen:
-
von
Runnable
ableiten, -
die Methode
run()
mit der Annotation@OnceTask
kennzeichnen, und -
programmatisch im von Spring bereitgestellten Task Scheduler eingeplant werden.
Für diese Tasks gelten dieselben Integrationsvorteile wie für mit @Scheduled
geplante Tasks.