从 LineCallbackHandler 共享 object 到 ExecutionCOntext
Sharing object from LineCallbackHandler to ExecutionCOntext
我有一个 csv 文件,顶部有一行被认为是 header。
我的 reader 配置如下:
FlatFileItemReader<EncCreditEntrepIndDTO> reader = new FlatFileItemReaderBuilder<EncCreditEntrepIndDTO>()
.strict(false)
.resource(resource)
.linesToSkip(1)
.skippedLinesCallback(headerHandler)
.lineMapper(mapper)
.saveState(false)
.build();
return reader;
这是我的 LineCallbackHandler :
public class HeaderHandler implements LineCallbackHandler {
@Override
public void handleLine(String line) {
AtomicReference<StepHeader> headerLine = new AtomicReference<>();
processLine(line, headerLine);
}
处理完 header 行后,我想将其保存在执行上下文中以便稍后在某些步骤中使用。
我尝试实施 StepListener,然后实施 StepExecutionListener 并检索实际上下文。它总是等于 null
I tried implementing StepListener and then StepExecutionListener and retrieve the actual context. It is always equals to null
如果您在以下步骤中将回调处理程序注册为侦听器,那么实施 StepExecutionListener
应该可行:
@Bean
public FlatFileItemReader<EncCreditEntrepIndDTO> itemReader(HeaderHandler headerHandler) {
return new FlatFileItemReaderBuilder<EncCreditEntrepIndDTO>()
// ...
.skippedLinesCallback(headerHandler)
.build();
}
@Bean
public Step step(StepBuilderFactory stepBuilderFactory, HeaderHandler headerHandler) {
return stepBuilderFactory.get("step")
.<EncCreditEntrepIndDTO, EncCreditEntrepIndDTO>chunk(5)
.reader(itemReader(headerHandler))
.writer(itemWriter())
.listener(headerHandler)
.build();
}
我有一个 csv 文件,顶部有一行被认为是 header。 我的 reader 配置如下:
FlatFileItemReader<EncCreditEntrepIndDTO> reader = new FlatFileItemReaderBuilder<EncCreditEntrepIndDTO>()
.strict(false)
.resource(resource)
.linesToSkip(1)
.skippedLinesCallback(headerHandler)
.lineMapper(mapper)
.saveState(false)
.build();
return reader;
这是我的 LineCallbackHandler :
public class HeaderHandler implements LineCallbackHandler {
@Override
public void handleLine(String line) {
AtomicReference<StepHeader> headerLine = new AtomicReference<>();
processLine(line, headerLine);
}
处理完 header 行后,我想将其保存在执行上下文中以便稍后在某些步骤中使用。 我尝试实施 StepListener,然后实施 StepExecutionListener 并检索实际上下文。它总是等于 null
I tried implementing StepListener and then StepExecutionListener and retrieve the actual context. It is always equals to null
如果您在以下步骤中将回调处理程序注册为侦听器,那么实施 StepExecutionListener
应该可行:
@Bean
public FlatFileItemReader<EncCreditEntrepIndDTO> itemReader(HeaderHandler headerHandler) {
return new FlatFileItemReaderBuilder<EncCreditEntrepIndDTO>()
// ...
.skippedLinesCallback(headerHandler)
.build();
}
@Bean
public Step step(StepBuilderFactory stepBuilderFactory, HeaderHandler headerHandler) {
return stepBuilderFactory.get("step")
.<EncCreditEntrepIndDTO, EncCreditEntrepIndDTO>chunk(5)
.reader(itemReader(headerHandler))
.writer(itemWriter())
.listener(headerHandler)
.build();
}