Spring 逐个文件批处理 reader
Spring Batch reader file by file
我正在开发一个 Spring 网络应用程序,使用 spring 引导和 spring 批处理框架。
我们有一组复杂且不同的 json 文件,我们需要:
- 读取每个文件
- 略微修改其内容
- 最终将它们存储在mongodb。
问题:对这个任务使用spring batch有意义吗?正如我在教程示例等中看到的那样,spring 批处理是逐行处理的正确工具,但是逐个文件呢?
我对编写器 (MongoItemWritter) 和处理器没有问题,但我不知道如何实现 reader。
谢谢!
是的 你可以明确地使用 Spring 批处理。
Reader 的商品可以是 File
。
public class CustomItemReader implements InitializingBean{
private List<File> yourFiles= null;
public File read() {
if ((yourFiles!= null) && (yourFiles.size() != 0)) {
return yourFiles.remove(0);
}
return null;
}
//Reading Items from Service
private void reloadItems() {
this.yourItems= new ArrayList<File>();
// populate the items
}
@Override
public void afterPropertiesSet() throws Exception {
reloadItems();
}
}
自定义处理器:
public class MyProcessor implements ItemProcessor<File, File> {
@Override
public File process(File arg0) throws Exception {
// Apply any logic to your File before transferring it to the writer
return arg0;
}
}
还有一个自定义作家:
public class MyWriter{
public void write(File file) throws IOException {
}
}
我正在开发一个 Spring 网络应用程序,使用 spring 引导和 spring 批处理框架。
我们有一组复杂且不同的 json 文件,我们需要:
- 读取每个文件
- 略微修改其内容
- 最终将它们存储在mongodb。
问题:对这个任务使用spring batch有意义吗?正如我在教程示例等中看到的那样,spring 批处理是逐行处理的正确工具,但是逐个文件呢?
我对编写器 (MongoItemWritter) 和处理器没有问题,但我不知道如何实现 reader。
谢谢!
是的 你可以明确地使用 Spring 批处理。
Reader 的商品可以是 File
。
public class CustomItemReader implements InitializingBean{
private List<File> yourFiles= null;
public File read() {
if ((yourFiles!= null) && (yourFiles.size() != 0)) {
return yourFiles.remove(0);
}
return null;
}
//Reading Items from Service
private void reloadItems() {
this.yourItems= new ArrayList<File>();
// populate the items
}
@Override
public void afterPropertiesSet() throws Exception {
reloadItems();
}
}
自定义处理器:
public class MyProcessor implements ItemProcessor<File, File> {
@Override
public File process(File arg0) throws Exception {
// Apply any logic to your File before transferring it to the writer
return arg0;
}
}
还有一个自定义作家:
public class MyWriter{
public void write(File file) throws IOException {
}
}