首页 > 解决方案 > 如果该项目阅读器或步骤的文件不存在,如何跳过整个步骤

问题描述

问题:> 我正在为我的春季批处理作业配备项目阅读器编写器处理器。当我运行它时,它给我错误初始化阅读器失败并显示:> 原因:java.lang.IllegalStateException:输入资源必须存在(阅读器处于“严格”模式):文件

我的要求是:如果文件不存在,我希望我的项目阅读器不运行。

谁能帮助我:如果该项目阅读器的文件不存在,我想跳过整个步骤。我的步骤包括(项目读取器、处理器和写入器)。

如果文件不存在,请告诉我如何跳过步骤。任何帮助将不胜感激。无论如何将阅读器设置为非严格模式。

标签: javaspringspring-bootspring-batch

解决方案


请参见此处:您可以在“块/步骤”上设置跳过条件(和限制)。

@Bean
public Step step1() {
  return this.stepBuilderFactory.get("step1")
    .<String, String>chunk(CHUNK_SIZE)
    .reader(flatFileItemReader())
    .writer(itemWriter())
    .faultTolerant()
    .skipLimit(0) // 0: dont re-try
    .skip(FlatFileParseException.class) // when you use FlatFileItemWriter,
      // but other exception (type) possible, e.g. IllegalStateException.class
    .build();
}

要在 FlatFileItemReader 中设置“非严格”模式,只需:

@Bean
public FlatFileItemReader<XY> flatFileItemReader() {

  FlatFileItemReader<XY> reader = new FlatFileItemReader<>();
  //!
  reader.setStrict(false);
  // reader.setXYZ ...
  return reader;
}

推荐阅读