Comment obtenir JobParameter et JobExecutionContext dans le ItemWriter?
Je veux récupérer JobParameter
et JobExecutionContext
objet dans mon ItemWriter
classe.
La façon de procéder?
J'ai essayé la mise en œuvre de StepExecutionListener
grâce à qui je suis juste appeler le parent méthodes de la classe. Mais il n'y parvient pas.
Merci d'avance.
J'ai résolu le problème ci-dessus, par l'extension StepExecutionListenerSupport classe.Après que remplacer parent méthode de classe est'beforeStep' public void beforeStep(StepExecution stepExecution) { // TODO Auto-généré méthode de stub.stepExecution = stepExecution; }
OriginalL'auteur Smita | 2013-02-19
Vous devez vous connecter pour publier un commentaire.
La mise en œuvre de StepExecutionListener en est une. En fait c'est la seule façon de Printemps pour le Lot 1.x.
À partir de Spring Batch 2, vous avez un autre choix: Vous pouvez injecter quoi que les entrées dans les Paramètres du Travail de l'Emploi et du Contexte d'Exécution de votre article de l'écrivain. Faire de votre article de l'écrivain
step
portée, puis faire usage de l'expression comme#{jobParameters['theKeyYouWant']}
ou#{jobExecutionContext['someOtherKey']}
pour la valeur de l'injection de vous article de l'écrivain.1. vous avez besoin du bean en cours de l'étape de la portée, 2. vous avez besoin de définition pour "contexte" de la propriété.
Comment se comporter lors de l'exécution de nombreux emplois à la fois? tout thread-safe problèmes?
L'étape de la portée va faire une nouvelle instance à chaque étape de l'exécution.
Si nous sommes la transmission des données par le biais de jobExecutionContext alors est-il nécessaire de configurer ExecutionContextPromotionListener avec les touches ?
OriginalL'auteur
Utiliser le
@BeforeStep
annotation d'appeler une méthode, avant l'étape de traitement.OriginalL'auteur
À ajouter à Adrian Shum, une réponse, si vous voulez éviter de chaque paramètre de travail pour être injecté dans une propriété de classe, vous pouvez injecter directement le
Map
deJobParameter
s comme suit:OriginalL'auteur
Si vous utilisez Printemps fichier de Configuration, vous pouvez accéder à la StepExecution objet avec:
Dans AAAReader classe vous avez besoin pour créer le champ approprié et un setter:
Même pour le Processeur et Écrivain classes.
Vous vous demandez pourquoi j'ai une baisse de vote sur ce point - sans commentaire?
OriginalL'auteur