简体   繁体   中英

How can I read multiple files at a time in a Spring Batch module?

I want my Spring Batch module to read multiple files at a time. Currently, my batch module can only read one file at a time, but I'm able to read multiple lines from a batch module. How can I implement this?

<core type="BatchCreate" class="com.batch.BatchCore" concurrency="1" start="20" stop="80" status="true">

You can use MultiResourceItemReader to read multiple files.

Below is java configuration for same

@Bean
  public MultiResourceItemReader<POJO> multiResourceItemReader() {
    MultiResourceItemReader<POJO> resourceItemReader = new MultiResourceItemReader<POJO>();
        ClassLoader cl = this.getClass().getClassLoader();
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);

    Resource[] resources = resolver.getResources("file:" + filePath );
    resourceItemReader.setResources(resources);
    resourceItemReader.setDelegate(reader());
    return resourceItemReader;
  }

  @Bean
  public FlatFileItemReader<POJO> reader() {
    FlatFileItemReader<POJO> reader = new FlatFileItemReader<POJO>();
    reader.setLineMapper(new DefaultLineMapper() {{
      setLineTokenizer(new DelimitedLineTokenizer() {{
        setNames(new String[]{"id1", "POJO"});
      }});
      setFieldSetMapper(new BeanWrapperFieldSetMapper<POJO>() {{
        setTargetType(POJO.class);
      }});
    }});
    return reader;
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM