[JAVA] @BeforeStep funktioniert nicht mit Spring-Batch-Tasklet

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");
    }

Ursache

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.

Lösung

https://stackoverflow.com/questions/29935824/beforestep-annotated-method-not-being-called

Verwenden Sie das Methodenargument execute </ code> `chunkContext``` oder implementieren Sie` StepExecutionListener```.

Recommended Posts

@BeforeStep funktioniert nicht mit Spring-Batch-Tasklet
Wenn @Transactional of Spring Boot nicht funktioniert
Hivernate Validator funktioniert nicht in der WAS Liberty-Umgebung
Zu der Sache, dass: n-tes Kind (-n + m) im Selektor von jsoup nicht wie beabsichtigt funktioniert
Die Änderung der Breite der Eclipse-Registerkarte funktioniert nicht.
JavaScript (Vanille) reagiert in Rails nicht.
Der MySQL-Container startet nicht in Docker
Die SQL-Datei wird nicht in Docker-Compose ausgeführt
Wenn das Formular wie "Auswählen von Materialisieren" nicht ordnungsgemäß funktioniert
In Java-TeraPad ab Anfänger geschriebener Code funktioniert aufgrund eines Fehlers nicht
Funktioniert die Escape-Sequenz (\) nicht? (für Mac)
Im Warndialog beim Starten des Applets funktioniert die Prüfung "Beim nächsten Mal nicht anzeigen" nicht
Localhost3000 wird in der Docker / Rails-Entwicklung nicht gestartet.
Hinweis: Memory Analyzer funktioniert unter Mac OS nicht
Funktioniert .dockerignore nicht? Es ist anders geschrieben als .gitignore!