首页 > 解决方案 > 春季批处理 - 处理器或作家?

问题描述

在我的 Spring boot 和 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() {
       ......
       ......
    }


  }

问题:由于所有对象都传递给处理器,我可以在处理器本身中处理它们,而不是使用任何转换等,并且由于我的目的通过使用处理器来解决,这是一个好习惯吗?或者我必须使用作家/定制作家来完成工作?

标签: spring-bootspring-batch

解决方案


我认为在编写器中进行 REST POST 调用比在处理器中进行调用更合适。REST POST 调用是一种对远程位置的写入操作。

因此,您可以省略处理器(因为它是可选的)并将该代码移动到项目编写器(而不是使用带有空write方法的 NoOp 项目编写器)。


推荐阅读