最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Batch批處理框架使用解析

 更新時間:2019年12月11日 14:40:10   作者:二刀  
這篇文章主要介紹了Spring Batch批處理框架使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了Spring Batch批處理框架使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

使用Spring Batch做為批處理框架,可以完成常規(guī)的數(shù)據(jù)量不是特別大的離線計算。

現(xiàn)在寫一個簡單的入門版示例。

這里默認大家已經(jīng)掌握了Spring Batch的基本知識,示例只是為了快速上手實踐

目標(biāo)1:程序隨機生成字符串,經(jīng)過Spring Batch后,統(tǒng)一在字符串后加入“----PROCESSED”,并輸出

目標(biāo)2:程序讀取txt文件,經(jīng)過Spring Batch后,統(tǒng)一加入如上字段,并輸出

Spring Batch的流程

  • 讀取數(shù)據(jù)----itemReader
  • 處理數(shù)據(jù)----itemProcess
  • 數(shù)據(jù)寫入----itemWrite

分析目標(biāo)可知,兩個目標(biāo)的輸入數(shù)據(jù)源不同,處理方式基本一致,數(shù)據(jù)完成后的寫入規(guī)則一致

由此可以分段完成代碼

itemReader

目標(biāo)一

這里沒有使用Spring Batch自帶的集中reader,所以自定義了隨機生成字符串的reader

這里代碼并不完善,reader會無線循環(huán)生成隨機字符串,但不影響本次學(xué)習(xí)的目的

public class MyItemReader implements ItemReader<String> {
  @Override
  public String read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
    return RandomStringUtils.randomAlphabetic(10);
  }
}

目標(biāo)二

由于是讀取文件中的內(nèi)容,所以不用自定義reader實現(xiàn),可直接使用FlatFileItemReader,在Batch的config中配置即可

  @Bean
  public ItemReader<String> textReader(){
 
    FlatFileItemReader<String> reader=new FlatFileItemReader<>();
    File file = new File("D:\\FTP\\ttest.txt");
    reader.setResource(new FileSystemResource(file));
    reader.setLineMapper(new LineMapper<String>() {
      @Override
      public String mapLine(String line, int lineNumber) throws Exception {
        return line;
      }
    });
    return reader;
 
  }

itemProcess

這里采用同一種處理方式即可

public class MyItemProcessor implements ItemProcessor<String,String> {
 
  @Override
  public String process(String s) throws Exception {
    return s+"---------PROCESSED";
  }
}

itemWriter

也采用同一種即可

public class MyItemWriter implements ItemWriter<String> {
  @Override
  public void write(List<? extends String> items) throws Exception {
    for (String item : items) {
      System.out.println(item);
    }
  }
}

配置完成Batch Config

@Configuration
@EnableBatchProcessing
public class BatchConfiguration extends DefaultBatchConfigurer {
 
  @Autowired
  public StepBuilderFactory stepBuilderFactory;
  @Autowired
  public JobBuilderFactory jobBuilderFactory;
 
  @Bean
  public MyItemProcessor processor(){
    return new MyItemProcessor();
  }
 
  @Bean
  public ItemWriter<String> writer(){
    return new MyItemWriter();
  }
 
  @Bean
  public ItemReader<String> textReader(){
    FlatFileItemReader<String> reader=new FlatFileItemReader<>();
    File file = new File("D:\\FTP\\ttest.txt");
    reader.setResource(new FileSystemResource(file));
    reader.setLineMapper(new LineMapper<String>() {
      @Override
      public String mapLine(String line, int lineNumber) throws Exception {
        return line;
      }
    });
    return reader;
  }
 
  @Bean
  public ItemReader<String> stringReader(){
    return new MyItemReader();
  }
 
  @Override
  public void setDataSource(DataSource dataSource) {
    super.setDataSource(dataSource);
  }
 
  @Bean
  public Step myStep(){
    return stepBuilderFactory
        .get("step1")
        //這個chunk size是最后調(diào)用寫入的時候,一次性寫入多少條已處理的數(shù)據(jù)
        .<String,String>chunk(10)
//        .reader(textReader())
        .reader(stringReader())
        .processor(processor())
        .writer(writer())
        .build();
 
  }
 
  @Bean
  public Job MyJob(){
    return jobBuilderFactory
        .get("MyJOB")
        .listener(new JobExecutionListenerSupport(){
          //所有處理結(jié)束后調(diào)用
          @Override
          public void afterJob(JobExecution jobExecution) {
            if(jobExecution.getStatus() == BatchStatus.COMPLETED){
              System.out.println("OK");
            }
          }
        })
        .flow(myStep())
        .end()
        .build();
  }
}

結(jié)束

最后直接運行spring boot程序即可

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatisplus中返回Vo的案例講解

    mybatisplus中返回Vo的案例講解

    這篇文章主要介紹了mybatisplus中返回Vo的案例,mybatisplus內(nèi)置的幾個方法使用泛型限制了方法的返回類型,所以實現(xiàn)返回Vo還是得自定義方法,?這個方法名盡量不要和原有的名字類似,本文通過實例代碼給大家詳解講解,需要的朋友可以參考下
    2023-03-03
  • java背包問題動態(tài)規(guī)劃算法分析

    java背包問題動態(tài)規(guī)劃算法分析

    這篇文章主要介紹了java背包問題動態(tài)規(guī)劃算法分析,想了解算法的同學(xué)一定要看一下
    2021-04-04
  • 一文詳解RabbitMQ如何保證消息可靠性

    一文詳解RabbitMQ如何保證消息可靠性

    這篇文章將詳細介紹RabbitMQ的消息可靠性機制,如消息丟失,消息重復(fù)性消費,消息積壓等問題,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • 圖文精講java常見分布式事務(wù)理論與解決方案

    圖文精講java常見分布式事務(wù)理論與解決方案

    對于分布式系統(tǒng),最簡單的理解就是一堆機器對外提供服務(wù),相比單體服務(wù),它可以承受更高的負載,但是分布式系統(tǒng)也帶了一系列問題,今天帶大家搞懂和分布式相關(guān)的常見理論和解決方案
    2021-11-11
  • controller函數(shù)中參數(shù)列表使用多個@RequestBody問題

    controller函數(shù)中參數(shù)列表使用多個@RequestBody問題

    這篇文章主要介紹了controller函數(shù)中參數(shù)列表使用多個@RequestBody問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 基于SpringBoot應(yīng)用監(jiān)控Actuator安全隱患及解決方式

    基于SpringBoot應(yīng)用監(jiān)控Actuator安全隱患及解決方式

    這篇文章主要介紹了SpringBoot應(yīng)用監(jiān)控Actuator安全隱患及解決方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于Eclipce配置Spring Boot過程圖解

    基于Eclipce配置Spring Boot過程圖解

    這篇文章主要介紹了基于Eclipce配置Spring Boot過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot集成SQL?Server的詳細指南

    SpringBoot集成SQL?Server的詳細指南

    SQL?Server是由Microsoft開發(fā)和推廣的以客戶/服務(wù)器(c/s)模式訪問、使用Transact-SQL語言的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS),本文給大家介紹了Spring?Boot集成SQL?Server的詳細指南,需要的朋友可以參考下
    2024-11-11
  • Java?Zookeeper分布式分片算法超詳細講解流程

    Java?Zookeeper分布式分片算法超詳細講解流程

    ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等
    2023-03-03
  • java string的一些細節(jié)剖析

    java string的一些細節(jié)剖析

    首先說明這里指的是Java中String的一些細節(jié)部分,需要的朋友可以參考
    2012-11-11

最新評論

修文县| 广宁县| 崇州市| 贵阳市| 张家口市| 桓仁| 莱阳市| 北宁市| 健康| 扬州市| 苏尼特左旗| 酉阳| 新兴县| 寻乌县| 夹江县| 滦平县| 社会| 白银市| 陕西省| 双桥区| 呼图壁县| 亳州市| 平和县| 长岭县| 常山县| 吉木萨尔县| 凤山市| 武安市| 甘孜| 太仓市| 汉中市| 漳州市| 德江县| 梅河口市| 洪洞县| 昌宁县| 绥芬河市| 南溪县| 阿拉尔市| 凤翔县| 山西省|