SpringBatch 入门篇

2017-06-02  本文已影响2035人  楊小強

SpringBatch 入门篇

示例项目地址 https://git.oschina.net/huicode/springbatch-learn

一、SpringBatch介绍:



二、快速入门:

1、 pom.xml 添加

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

为什么在这里需要引入一个数据库,不引入数据库包为什么会报错?
问题的原因在这里: AbstractBatchConfiguration 源码如下: @BatchConfiguration 是springbatch启用的标识,AbstractBatchConfiguration是该注解的具体逻辑处理,AbstractBatchConfiguration 中需要注入dataSources,在没database 为空的时候注入失败,程序启动报错!

@Configuration
@Import(ScopeConfiguration.class)
public abstract class AbstractBatchConfiguration implements ImportAware {

    @Autowired(required = false)
    private Collection<DataSource> dataSources;

    private BatchConfigurer configurer;

    @Bean
    public JobBuilderFactory jobBuilders() throws Exception {
        return new JobBuilderFactory(jobRepository());
    }
    
    //。。。
}

2、创建BatchConfiguration(也可以是其他类名)


import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableBatchProcessing
@EnableAutoConfiguration
public class BatchConfiguration {


    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Bean
    public Step step1() {
        return stepBuilderFactory.get("step1")
                .tasklet((contribution, chunkContext) -> null)
                .build();
    }

    @Bean
    public Job job(Step step1) throws Exception {
        return jobBuilderFactory.get("job1")
                .incrementer(new RunIdIncrementer())
                .start(step1)
                .build();
    }
}

三、SpringBatch 的分层架构

image.png

四、SpringBatch 执行流程

image.png
上一篇 下一篇

猜你喜欢

热点阅读