[JAVA] @BeforeStep ne fonctionne pas avec le Tasklet Spring-batch

Même si vous ajoutez une méthode qui ajoute @ BeforeStep '' à Tasklet '' comme indiqué ci-dessous dans spring-batch, cela ne fonctionne pas comme prévu.

@Component
public class MyTasklet implements Tasklet {
    
    @BeforeStep
    void beforeStep(StepExecution stepExecution) {
        System.out.println("asdfasdf");
    }

Cause

Probablement parce qu'il n'y a pas d'enregistrement automatique de l'auditeur dans `` Tasklet ''.

Si vous implémentez un écouteur tel que StepExecutionListener dans une classe d'implémentation telle que ItemReader, cet écouteur sera également automatiquement enregistré (au moins pour exécuter spring-batch avec spring-boot). Voir Spring-batch est automatiquement enregistré lorsqu'un auditeur est implémenté avec un lecteur.

Comme mentionné ci-dessus, il semble que ItemReader dispose d'un enregistrement automatique de l'auditeur, mais pas `` Tasklet```. Je suppose simplement parce que je n'ai pas suivi correctement la source ou la documentation.

Solution

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

Utilisez l'argument de méthode execute </ code> chunkContext ou implémentez `` StepExecutionListener.

Recommended Posts

@BeforeStep ne fonctionne pas avec le Tasklet Spring-batch
Lorsque @Transactional of Spring Boot ne fonctionne pas
Hivernate Validator ne fonctionne pas dans l'environnement WAS Liberty
À propos du fait que: nth-child (-n + m) ne fonctionne pas comme prévu dans le sélecteur de jsoup
le changement de largeur de tabulation d'éclipse ne fonctionne pas
JavaScript (vanilla) ne répond pas dans Rails.
Le conteneur MySQL ne démarre pas dans Docker
Le fichier .sql ne s'exécute pas dans docker-compose
Lorsque le formulaire tel que Select of Materialize ne fonctionne pas correctement
Le code écrit en Java-TeraPad à partir du débutant ne fonctionne pas en raison d'une erreur
La séquence d'échappement (\) ne fonctionne-t-elle pas? (pour Mac)
Dans la boîte de dialogue d'avertissement lors du démarrage de l'applet, la vérification de "Ne pas afficher de la prochaine fois" ne fonctionne pas
Localhost3000 ne démarre pas dans le développement Docker / Rails.
Remarque: l'analyseur de mémoire ne fonctionne pas sous Mac OS
.Dockerignore ne fonctionne pas? Il est écrit différemment de .gitignore!