首页 > 解决方案 > 批处理步骤的 ItemWriter 部分出现不兼容类型错误的问题

问题描述

我正在尝试向我的 Spring Batch 作业添加一个新步骤,该步骤将创建一个 XLS 文件。我有一个阅读器,它将输出放到一个名为 CLUCReportDTO 的 bean 中。我正在研究 itemWriter 的蓝图来创建 CSV 文件。这是代码

A8SPACH2 类内部

  @Autowired
   private ACH2WriteProcessor clucWriter;


  public Step jobStep020() {
    return stepBuilderFactory.get(JOB.ACH2_BATCH_LOAD.getProfileName() + 
   ".js020")
            .listener(promotionListener)
            .<CLUCReportDTO, String> chunk(100)
            .reader(lockboxWirePostService.getUnappliedJes())
            .writer(clucWriter)
            .listener(listener)
            .build();
  }

在 ACH2WriteProcessor 类内部

public class ACH2WriteProcessor implements ItemWriter<CLUCReportDTO>{


@Override
    public void write(List<? extends CLUCReportDTO> items) throws Exception 
    {  


    }  

 }

我在 A8SPACH2 中收到以下错误:无法转换为 ItemWriter< ?超级字符串>。我在导致此错误的 A8SPACH2 或 ACH2WriteProcessor 的设置中缺少什么。

谢谢

标签: springspring-batch

解决方案


根据您的配置 ( .<CLUCReportDTO, String> chunk(100)),项目编写器应该编写类型的项目String,但您声明它编写类型CLUCReportDTO( public class ACH2WriteProcessor implements ItemWriter<CLUCReportDTO>) 的项目。

你的项目作者应该这样声明:

public class ACH2WriteProcessor implements ItemWriter<String>{

   @Override
   public void write(List<? extends String> items) throws Exception {  

   }  
}

推荐阅读