前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Spring Batch 配置方式-Java配置

Spring Batch 配置方式-Java配置

原创
作者头像
堕落飞鸟
发布2023-04-16 09:57:58
发布2023-04-16 09:57:58
48800
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

Java配置

除了XML配置外,Spring Batch还支持使用Java代码进行配置。Java配置可以使配置文件更加简洁和易于维护。下面是一个使用Java配置的示例:

代码语言:javascript
代码运行次数:0
复制
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Bean
    public FlatFileItemReader<MyObject> itemReader() {
        FlatFileItemReader<MyObject> reader = new FlatFileItemReader<>();
        reader.setResource(new ClassPathResource("input.csv"));
        reader.setLineMapper(new DefaultLineMapper<MyObject>() {{
            setLineTokenizer(new DelimitedLineTokenizer() {{
                setNames(new String[]{"id", "name", "age"});
            }});
            setFieldSetMapper(new BeanWrapperFieldSetMapper<MyObject>() {{
                setTargetType(MyObject.class);
            }});
        }});
        return reader;
    }

    @Bean
    public MyItemProcessor itemProcessor() {
        return new MyItemProcessor();
    }

    @Bean
    public FlatFileItemWriter<MyObject> itemWriter() {
        FlatFileItemWriter<MyObject> writer = new FlatFileItemWriter<>();
        writer.setResource(new ClassPathResource("output.csv"));
        writer.setLineAggregator(new DelimitedLineAggregator<MyObject>() {{
            setDelimiter(",");
            setFieldExtractor(new BeanWrapperFieldExtractor<MyObject>() {{
                setNames(new String[]{"id", "name", "age"});
            }});
        }});
        return writer;
    }

    @Bean
    public Step myStep() {
        return stepBuilderFactory.get("myStep")
                .<MyObject, MyObject>chunk(10)
                .reader(itemReader())
                .processor(itemProcessor())
                .writer(itemWriter())
                .build();
    }

    @Bean
    public Job myJob() {
        return jobBuilderFactory.get("myJob")
                .incrementer(new RunIdIncrementer())
                .flow(myStep())
                .end()
                .build();
    }
}

在这个示例中,我们使用了@Configuration和@EnableBatchProcessing注解来标识这个类是一个配置类,并启用了Spring Batch的批处理功能。我们还注入了JobBuilderFactory和StepBuilderFactory实例,以便我们可以使用它们创建Job和Step。

在itemReader、itemProcessor和itemWriter方法中,我们使用@Bean注解定义了三个组件,并设置了它们的属性。与XML配置类似,我们使用FlatFileItemReader、FlatFileItemWriter、DefaultLineMapper、DelimitedLineTokenizer、BeanWrapperFieldSetMapper、DelimitedLineAggregator和BeanWrapperFieldExtractor等类来定义ItemReader、ItemProcessor和ItemWriter,并设置了相应的输入和输出文件。

在myStep方法中,我们使用stepBuilderFactory创建了一个名为myStep的Step,并使用chunk方法定义了一个Chunk-oriented任务,并在其中引用了itemReader、itemProcessor和itemWriter。与XML配置类似,我们还设置了commit-interval为10。

最后,在myJob方法中,我们使用jobBuilderFactory创建了一个名为myJob的Job,并在其中包含了myStep。我们还使用RunIdIncrementer类为Job配置了一个增量器,以确保每次运行Job时都会生成新的实例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档