SpringBatch 入門(mén)篇

SpringBatch 入門(mén)篇

示例項(xiàng)目地址 https://git.oschina.net/huicode/springbatch-learn

一、SpringBatch介紹:

  • SpringBatch 是一個(gè)大數(shù)據(jù)量的并行處理框架。通常用于數(shù)據(jù)的離線遷移,和數(shù)據(jù)處理,?持事務(wù)、并發(fā)、流程、監(jiān)控、縱向和橫向擴(kuò)展,提供統(tǒng)?的接?管理和任務(wù)管理;SpringBatch是SpringSource和埃森哲為了統(tǒng)一業(yè)界并行處理標(biāo)準(zhǔn)為廣大開(kāi)發(fā)者提供方便開(kāi)發(fā)的一套框架。
    官方地址:github.com/spring-projects/spring-batch

  • SpringBatch 本身提供了重試,異常處理,跳過(guò),重啟、任務(wù)處理統(tǒng)計(jì),資源管理等特性,這些特性開(kāi)發(fā)者看重他的主要原因;
  • SpringBatch 是一個(gè)輕量級(jí)的批處理框架;
  • SpringBatch 結(jié)構(gòu)分層,業(yè)務(wù)與處理策略、結(jié)構(gòu)分離;
  • 任務(wù)的運(yùn)行的實(shí)例狀態(tài),執(zhí)行數(shù)據(jù),參數(shù)都會(huì)落地到數(shù)據(jù)庫(kù);

二、快速入門(mén):

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>

為什么在這里需要引入一個(gè)數(shù)據(jù)庫(kù),不引入數(shù)據(jù)庫(kù)包為什么會(huì)報(bào)錯(cuò)?
問(wèn)題的原因在這里: AbstractBatchConfiguration 源碼如下: @BatchConfiguration 是springbatch啟用的標(biāo)識(shí),AbstractBatchConfiguration是該注解的具體邏輯處理,AbstractBatchConfiguration 中需要注入dataSources,在沒(méi)database 為空的時(shí)候注入失敗,程序啟動(dòng)報(bào)錯(cuò)!

@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、創(chuàng)建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 的分層架構(gòu)

  • Insfrastructure 策略管理:包括任務(wù)的失敗重試,異常處理,事務(wù),skip,以及數(shù)據(jù)的輸入輸出(文本文件,DB,Message)
  • Core: springBatch 的核心,包括JobLauch,job,step等等
  • Application: 業(yè)務(wù)處理,創(chuàng)建任務(wù),決定任務(wù)的執(zhí)行方式(定時(shí)任務(wù),手動(dòng)觸發(fā)等)
image.png

四、SpringBatch 執(zhí)行流程

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,954評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,288評(píng)論 25 708
  • 最近熱播的國(guó)產(chǎn)電視劇《我的前半生》終于完結(jié),吃瓜群眾們終于也盼到了結(jié)尾。由于這部劇太火了,幾年不看電視劇的紅彤彤決...
    是雨彤呀閱讀 310評(píng)論 0 2
  • 這是博客里面一篇有一段時(shí)間的文章了,不過(guò)打算把所有博客文章在簡(jiǎn)書(shū)都發(fā)布,所以在慢慢轉(zhuǎn)移,不過(guò)都是用markdown...
    付維亮閱讀 855評(píng)論 2 5