spring-batch - ItemReader 类中的 SpringBatch read() 函数返回类型为 String 并希望返回 FlatFileItemReader, 我该怎么做?
问题描述
我的 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() 返回类型是字符串。
我应该如何将此阅读器发送到 BathConfig 中的工作?
注意:如果我在 springConfig 文件中执行此 FlatFileItemReader 处理并将其传递给那里的作业,那么它只会工作。前任:
Step step = stepBuilderFactory.get("sampleSetp")
.<String, String>chunk(10)
.reader(flatFileReader())
.write()
.build();
其中 flatFileReader() 是:
public FlatFileItemReader<String> flatFileReader(){
...
return FlatFileItemReader<String> type
}
解决方案
ItemReader 类中的 SpringBatch read() 函数返回类型是 String 并且想要返回 FlatFileItemReader ,我应该怎么做?
该read
方法应返回实际项目(在您的情况下为 String )而不是另一个阅读器。如果您想要一个委托给 a 的自定义阅读器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();
}
}
推荐阅读
- javascript - 将 HTML 元素存储在变量中
- typescript - 如何检查对象中的所有字段是否为“假”而只有一个为“真”?
- c++ - 在 qt 中构建单例类时编译错误“xxxx 在此上下文中是私有的”
- php - 如何在另一个数组中回显数组中的特定值
- mysql - 使用带有 IS NULL 和 IS NOT NULL 的 Case 语句
- django - 如何设置 django 表单的样式
- python - 我正在尝试以无头模式打开一个站点,但它似乎陷入了一个激进的循环,我该如何解决?
- python - 如何从多行字符串(或列表)中提取列名?
- c++ - 我们如何使用从 vcpkg 安装的软件包?
- flutter - 如何为 SplashScreen 库禁用 Flutter 声音安全和空安全?