0
私はこの仕事を持っていますが、それを実行するとパーティショナーのbeforeStepメソッドが呼び出されることはありません。私は間違って何をしていますか?PartitionerはStepExecutionListenerを実装しますが、beforeStepは呼び出されません
@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) {
...
}
...
}
可能であれば、xml構成ファイルは使用しません。
私はしないでくださいJavaConfigについてよく知っていますが、partitioner()はリスナーとして自動的に登録されていないと思いますが、手動で登録する必要があります –
@LucaBassoRicciに感謝します。注釈が十分か、XML設定が必要ですか? –
StepBuilderでlistener()メソッドを見つけることができます –