Spring 批处理 - 处理器还是写入器?
Spring batch - Processor or Writer?
在我的 Spring 引导和 Spring 批处理应用程序中,我有一个这样的步骤:
@Bean
public Step step1() {
return stepBuilderFactory.get("step1").<FileInfo, FileInfo>chunk(10).reader(FileInfoItemReader).processor(processor()).writer(writer()).build();
}
我的作家是一个空的,如下所示:
public class BlankWriter<T> implements ItemWriter<T> {
@Override
public void write(List<? extends T> items) throws Exception {
}
}
现在,在我的处理器中我有这个:
public class FileInfoItemProcessor implements ItemProcessor<FileInfo, FileInfo> {
.....
@Override
public FileInfo process(final FileInfo FileInfo) throws Exception {
myCustomStuff () {
......
}
}
public static void myCustomStuff() {
......
......
}
}
问题: 由于所有对象都传递给处理器,我可以在我的处理器本身中处理它们,而不是使用任何转换等,因为我的目的通过使用处理器得到解决,这是一个好习惯吗?或者我必须使用 writer/custom-writer 才能完成工作?
我认为在编写器中执行 REST POST 调用比在处理器中执行更合适。 REST POST 调用是一种对远程位置的写操作。
因此您可以省略处理器(因为它是可选的)并将该代码移至项目编写器(而不是使用具有空 write
方法的 NoOp 项目编写器)。
在我的 Spring 引导和 Spring 批处理应用程序中,我有一个这样的步骤:
@Bean
public Step step1() {
return stepBuilderFactory.get("step1").<FileInfo, FileInfo>chunk(10).reader(FileInfoItemReader).processor(processor()).writer(writer()).build();
}
我的作家是一个空的,如下所示:
public class BlankWriter<T> implements ItemWriter<T> {
@Override
public void write(List<? extends T> items) throws Exception {
}
}
现在,在我的处理器中我有这个:
public class FileInfoItemProcessor implements ItemProcessor<FileInfo, FileInfo> {
.....
@Override
public FileInfo process(final FileInfo FileInfo) throws Exception {
myCustomStuff () {
......
}
}
public static void myCustomStuff() {
......
......
}
}
问题: 由于所有对象都传递给处理器,我可以在我的处理器本身中处理它们,而不是使用任何转换等,因为我的目的通过使用处理器得到解决,这是一个好习惯吗?或者我必须使用 writer/custom-writer 才能完成工作?
我认为在编写器中执行 REST POST 调用比在处理器中执行更合适。 REST POST 调用是一种对远程位置的写操作。
因此您可以省略处理器(因为它是可选的)并将该代码移至项目编写器(而不是使用具有空 write
方法的 NoOp 项目编写器)。