Spring Batch 框架重温

 

 

一个Batch(批处理)过程由一个Job(作业)组成。这个实体封装了整个批处理过程。

一个Job(作业)可以由一个或多个Step(步骤)组成。在大多数情况下,一个步骤将读取数据(通过ItemReader),处理数据(使用ItemProcessor),然后写入数据(通过ItemWriter)。

JobLauncher处理启动一个Job(作业)。

最后,JobRepository存储关于配置和执行的Job(作业)的元数据。

 

 

摘自:https://www.cnblogs.com/liululee/p/11124383.html

核心代码:

@Configuration
public class SampleJobConfigure {

    @Bean
    public Job helloWorlJob(JobBuilderFactory jobBuilders,
                            StepBuilderFactory stepBuilders) {
        return jobBuilders.get("helloWorldJob")
                          .start(helloWorldStep(stepBuilders)).build();
    }

    @Bean
    public Step helloWorldStep(StepBuilderFactory stepBuilders) {
        return stepBuilders.get("helloWorldStep")
                .<Person, String>chunk(10).reader(reader())
                                          .processor(processor()).writer(writer()).build();
    }

    @Bean
    public FlatFileItemReader<Person> reader() {
        return new FlatFileItemReaderBuilder<Person>()
                .name("personItemReader")
                .resource(new ClassPathResource("csv/persons.csv"))
                .delimited().names(new String[] {"firstName", "lastName"})
                .targetType(Person.class).build();
    }

    @Bean
    public PersonItemProcessor processor() {
        return new PersonItemProcessor();
    }

    @Bean
    public FlatFileItemWriter<String> writer() {
        return new FlatFileItemWriterBuilder<String>()
                .name("greetingItemWriter")
                .resource(new FileSystemResource(
                        "target/test-outputs/greetings.txt"))
                .lineAggregator(new PassThroughLineAggregator<>()).build();
    }
}

  启动job

 Job job = jobRegistry.getJob(jobName);
jobLauncher.run(job, paramBuilder.toJobParameters());
//JobExecution jobExecution = jobLauncherTestUtils.launchJob();

 


如果是Springboot项目,自动配置在加上注解@EnableBatchProcessing 后会在项目启动时 自动运行所有job, 如果想要制定job执行配置spring.batch.job.names 就可以了

也可以自定义运行CommandlineRunner 去制定运行jobs

https://docs.spring.io/spring-boot/docs/1.2.0.M1/reference/html/howto-batch-applications.html

  

posted on 2021-02-18 20:57  涤生-三省吾身  阅读(78)  评论(0编辑  收藏  举报

导航