0
J'ai ce travail mais lors de son exécution la méthode beforeStep dans le partitionneur n'est jamais appelée. Qu'est-ce que je fais mal?Partitioner implémente StepExecutionListener mais beforeStep n'est pas appelé
@Configuration
public class SomeJob {
@Bean(name = "some-job")
public Job job() {
return jobBuilderFactory.get(getName())
.incrementer(new RunIdIncrementer())
.start(stepOne())
.next(stepTwo())
.build();
}
private Step stepOne() {
TaskletStep stepOne = stepBuilderFactory
.get("step-one")
.<...>chunk(CHUNK_SIZE)
.reader(someReader())
.writer(someWriter())
.build();
return stepBuilderFactory
.get("partitionedStepOne")
.partitioner(stepOne)
.partitioner("partition", partitioner())
.taskExecutor(someExecutor())
.gridSize(SIZE)
.build();
}
@Bean
@Scope(value = "step", proxyMode = ScopedProxyMode.TARGET_CLASS)
Partitioner partitioner() {
return new OffsetBasedPartitioner(NAME, storedArticleMasterDataRepository);
}
} // end of job class
....
public class OffsetBasedPartitioner implements Partitioner, StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
...
}
...
}
J'éviterais les fichiers de configuration xml si possible.
Je ne Je connais bien JavaConfig, mais je suppose que partitioner() n'est pas automatiquement enregistré en tant qu'auditeur mais que vous devez l'enregistrer manuellement –
merci @LucaBassoRicci, avez-vous une idée de comment faire cela? les annotations sont-elles suffisantes ou ai-je besoin de config xml? –
Je suppose que vous pouvez trouver une méthode listener() dans StepBuilder –