我的Springbatch配置类有以下工作:
public Job job(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
Step step = stepBuilderFactory.get("sampleSetp")
.<String, String>chunk(10)
.reader(new Reader())
.writer(new Writer())
.build();
}我的读物课是:
public class Reader implements ItemReader<String> {
@Override
public String read() {
FlatFileItemReader<String> reader = new FlatFileItemReader<String>();
reader.setResource(someResource);
reader.setLineMapper(lineMapper());
**return reader; //This should be string, but i have FlatFileItemReader<String> type.**
}
} 我正在对读取器(FlatFileItemReader)做一些工作,希望返回到这个阅读器上,但是read()返回类型是String。
我应该如何把这个阅读器派到BathConfig的工作中去?
注意:如果我在FlatFileItemReader文件中执行这个springConfig处理,并将它传递给那里的作业,那么它才能正常工作。例:
Step step = stepBuilderFactory.get("sampleSetp")
.<String, String>chunk(10)
.reader(flatFileReader())
.write()
.build();其中flatFileReader()是:
public FlatFileItemReader<String> flatFileReader(){
...
return FlatFileItemReader<String> type
}发布于 2020-08-24 10:07:54
SpringBatch read()函数在ItemReader类中返回类型是String,并且希望返回FlatFileItemReader,我应该如何做呢?
read方法应该返回实际的项(在您的情况下是一个字符串),而不是返回另一个读取器。如果希望使用委托给FlatFileItemReader的自定义读取器,可以执行以下操作:
public class Reader implements ItemReader<String> {
private FlatFileItemReader<String> delegate;
public Reader(FlatFileItemReader<String> delegate) {
this.delegate = delegate;
}
@Override
public String read() {
return delegate.read();
}
}https://stackoverflow.com/questions/63551401
复制相似问题