springbatch " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

鎬庝箞浣跨敤springbatch鍚堝苟澶氫釜鏂囦欢

扬州沐宇科技
2023-11-29 16:48:31
springbatch

浣跨敤Spring Batch鍚堝苟澶氫釜鏂囦欢鍙互鎸夌収浠ヤ笅姝ラ杩涜锛?/p>

  1. 鍒涘缓涓€涓狟atch Job閰嶇疆绫伙紝浣跨敤@EnableBatchProcessing娉ㄨВ寮€鍚疊atch Processing鐨勬敮鎸併€傚湪閰嶇疆绫讳腑瀹氫箟涓€涓猄tepBean锛屽苟璁剧疆鍏惰鍙栧櫒銆佸鐞嗗櫒鍙婂啓鍏ュ櫒銆?/li>
@Configuration
@EnableBatchProcessing
public class BatchConfig {

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Autowired
    private ItemReader<File> fileReader;

    @Autowired
    private ItemProcessor<File, String> fileProcessor;

    @Autowired
    private ItemWriter<String> fileWriter;

    @Bean
    public Step mergeFilesStep() {
        return stepBuilderFactory.get("mergeFilesStep")
                .<File, String>chunk(10)
                .reader(fileReader)
                .processor(fileProcessor)
                .writer(fileWriter)
                .build();
    }

    @Bean
    public Job mergeFilesJob() {
        return jobBuilderFactory.get("mergeFilesJob")
                .start(mergeFilesStep())
                .build();
    }
}
  1. 鍒涘缓涓€涓狪temReader鏉ヨ鍙栧涓枃浠躲€傚彲浠ヤ娇鐢?code>MultiResourceItemReader鏉ヨ鍙栧涓枃浠讹紝骞跺皢瀹冧滑鍚堝苟涓轰竴涓垪琛ㄣ€?/li>
@Bean
public MultiResourceItemReader<File> fileReader() {
    MultiResourceItemReader<File> reader = new MultiResourceItemReader<>();
    reader.setResources(new Resource[] {
        new FileSystemResource("file1.csv"),
        new FileSystemResource("file2.csv"),
        new FileSystemResource("file3.csv")
    });
    reader.setDelegate(new FlatFileItemReaderBuilder<File>()
        .name("fileItemReader")
        .delimited()
        .names("column1", "column2", "column3")
        .targetType(File.class)
        .build());
    return reader;
}
  1. 鍒涘缓涓€涓狪temProcessor鏉ュ鐞嗘枃浠躲€傚彲浠ユ牴鎹疄闄呴渶姹傚鏂囦欢杩涜澶勭悊锛屽苟杩斿洖澶勭悊鍚庣殑缁撴灉銆?/li>
@Bean
public ItemProcessor<File, String> fileProcessor() {
    return file -> {
        // 澶勭悊鏂囦欢閫昏緫锛岃繑鍥炲鐞嗗悗鐨勫瓧绗︿覆
        return file.getName();
    };
}
  1. 鍒涘缓涓€涓狪temWriter鏉ュ啓鍏ュ悎骞跺悗鐨勭粨鏋溿€傚彲浠ヤ娇鐢?code>FlatFileItemWriter鏉ュ皢缁撴灉鍐欏叆涓€涓枃浠躲€?/li>
@Bean
public ItemWriter<String> fileWriter() {
    FlatFileItemWriter<String> writer = new FlatFileItemWriter<>();
    writer.setResource(new FileSystemResource("mergedFile.csv"));
    writer.setLineAggregator(new PassThroughLineAggregator<>());
    return writer;
}
  1. 杩愯Batch Job銆?/li>
@Autowired
private JobLauncher jobLauncher;

@Autowired
private Job mergeFilesJob;

public void runBatchJob() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
    JobParameters jobParameters = new JobParametersBuilder()
            .addLong("time", System.currentTimeMillis())
            .toJobParameters();
    jobLauncher.run(mergeFilesJob, jobParameters);
}

浠ヤ笂灏辨槸浣跨敤Spring Batch鍚堝苟澶氫釜鏂囦欢鐨勫熀鏈楠ゃ€傛牴鎹疄闄呴渶姹傚彲浠ヨ繘琛岄€傚綋璋冩暣鍜屾墿灞曘€?/p>

扫码添加客服微信