J'ai besoin dans mon projet quelle exception se produisent dans ItemProccesor besoin de stocker Exception dans le contexte JobExecution et à la fin de JobExecution envoyer du courrier pour les enregistrements Exceptional mais comment obtenir l'objet JobExecution dans processListner? J'ai essayé d'utiliser @beforestep dans processListner mais l'objet JobExecution était nulle est-il un moyen d'obtenir contexte JobExecution dans le processus ListnerSpring Batch Comment faire pour obtenir l'objet JobExecution dans Process Listner
0
A
Répondre
0
Je suis solution dans le lot de printemps pour question ci-dessus, doivent préciser jobscope dans auditeur de processus et le contexte de l'exécution du travail d'accès dans le code de la classe listner est mentionnée ci-dessous.
@Bean
@JobScope
public CaliberatedProcessorListener calibratedProcessorListener() {
return new CaliberatedProcessorListener();
}
public class CaliberatedProcessorListener <T, S> implements ItemProcessListener<T, S> {
@Value("#{jobExecution}")
public JobExecution jobExecution;
@Override
public void beforeProcess(T calibratedProessorInPut) {
// // do nothing
}
@Override
public void afterProcess(T calibratedProessorInput, S calibratedProessorOutPut) {
// do nothing
}
@Override
public void onProcessError(T item, Exception calibratedProcessorEx) {
FtpEmailData ftpEmailData = (FtpEmailData) jobExecution.getExecutionContext().get("calDeviceBatchInfo");
ftpEmailData.getExceptionList().add(new CalibratedDeviceException(calibratedProcessorEx.getMessage()));
}
}