Selbst wenn Sie eine Methode hinzufügen, die @ BeforeStep``` zu `Tasklet``` hinzufügt, wie unten im Spring-Batch gezeigt, funktioniert dies nicht wie beabsichtigt.
@Component
public class MyTasklet implements Tasklet {
@BeforeStep
void beforeStep(StepExecution stepExecution) {
System.out.println("asdfasdf");
}
Wahrscheinlich, weil es in `` `Tasklet``` keine automatische Listener-Registrierung gibt.
Wenn Sie einen Listener wie StepExecutionListener in einer Implementierungsklasse wie ItemReader implementieren, wird dieser Listener ebenfalls automatisch registriert (zumindest für die Ausführung von Spring-Batch zusammen mit Spring-Boot). Siehe Spring-Batch wird automatisch registriert, wenn ein Listener mit einem Reader implementiert wird.
Wie oben erwähnt, scheint die Ursache darin zu liegen, dass `ItemReader``` eine automatische Listener-Registrierung hat,` Tasklet``` jedoch nicht. Ich rate nur, weil ich der Quelle oder Dokumentation nicht richtig gefolgt bin.
https://stackoverflow.com/questions/29935824/beforestep-annotated-method-not-being-called
Verwenden Sie das Methodenargument execute </ code> `chunkContext``` oder implementieren Sie` StepExecutionListener```.
Recommended Posts