日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

手把手教你搭建第一個Spring Batch項目的步驟

瀏覽:30日期:2023-08-17 17:52:54

一、概述

Spring Batch是一個輕量級,全面的批處理框架。

一個典型的批處理過程可能是:

從數據庫,文件或隊列中讀取大量記錄。 以某種方式處理數據。 以修改之后的形式寫回數據

Spring Batch 應用架構圖:

手把手教你搭建第一個Spring Batch項目的步驟

一個Batch(批處理)過程由一個Job(作業)組成。這個實體封裝了整個批處理過程。

一個Job(作業)可以由一個或多個Step(步驟)組成。在大多數情況下,一個步驟將讀取數據(通過ItemReader),處理數據(使用ItemProcessor),然后寫入數據(通過ItemWriter)。

JobLauncher處理啟動一個Job(作業)。

最后,JobRepository存儲關于配置和執行的Job(作業)的元數據。

二、實例

1、新建 springboot項目

創建項目傳送門

選擇配置,添加依賴,GENERATE 后導入到你的IDE

手把手教你搭建第一個Spring Batch項目的步驟

2、springboot 項目配置

2.1 在新建項目時添加依賴了,就會發現pom中引入了 spring-barch的相關依賴,如新建項目時沒有添加依賴,則需要手動添加。

//pom.xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-batch</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.batch</groupId><artifactId>spring-batch-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

2.2 為主程序的@SpringBootApplication注解添加exclude屬性,可以防止 SpringBoot 為數據庫連接自動配置 DataSource

//主程序@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)public class Springbatch2020829Application {public static void main(String[] args) {SpringApplication.run(Springbatch2020829Application.class, args);}}

2.3 新建實體model

//Person.javapublic class Person { private String firstName; private String lastName;}//構造函數,get,set方法, toString()方法略

2.4 配置 Spring Batch Job

2.4.1 新建 BatchConfig 類,重寫父類 setDataSource 方法

//BatchConfig.java@Configuration@EnableBatchProcessingpublic class BatchConfig extends DefaultBatchConfigurer { @Override public void setDataSource(DataSource dataSource) { }}

2.4.2 新建 HelloWorldJobConfig 類,配置 job ,step

//HelloWorldJobConfig.java@Configurationpublic class HelloWorldJobConfig { //新建 Job,Spring 將自動注入 jobBuilders ,stepBuilders兩個 beans @Bean public Job helloWorlJob(JobBuilderFactory jobBuilders, StepBuilderFactory stepBuilders) { return jobBuilders.get('helloWorldJob') .start(helloWorldStep(stepBuilders)).build(); } //新建 Step,使用 StepBuilderFactory 創建 @Bean public Step helloWorldStep(StepBuilderFactory stepBuilders) { return stepBuilders.get('helloWorldStep') .<Person, String>chunk(10).reader(reader()) .processor((Function<? super Person, ? extends String>) 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(); }}

2.5 處理數據

//PersonItemProcessor.javapublic class PersonItemProcessor implements ItemProcessor<Person, String> { private static final Logger LOGGER = LoggerFactory.getLogger(PersonItemProcessor.class); //打印日志信息 @Override public String process(Person person) throws Exception { String greeting = 'Hello ' + person.getFirstName() + ' ' + person.getLastName() + '!'; LOGGER.info('converting ’{}’ into ’{}’', person, greeting); return greeting; }}

2.6 測試 Spring Batch 示例

//PersonItemProcessor.javapublic class PersonItemProcessor implements ItemProcessor<Person, String> { private static final Logger LOGGER = LoggerFactory.getLogger(PersonItemProcessor.class); //打印日志信息 @Override public String process(Person person) throws Exception { String greeting = 'Hello ' + person.getFirstName() + ' ' + person.getLastName() + '!'; LOGGER.info('converting ’{}’ into ’{}’', person, greeting); return greeting; }}

2.7 啟動項目,在 target/test-outputs/greetings.txt 文件中找到結果。

手把手教你搭建第一個Spring Batch項目的步驟

三、理解

JobRepository

從字面上可以理解為'任務倉庫',如果把一個批處理比作一個任務的話,這個倉庫存儲了很多這種任務。JobRepository 會將任務包括其狀態等數據持久化,存儲到許多數據庫中。Spring Batch 默認會提供一個 SimpleJobRepository 倉庫,方便我們開啟批處理。

Job

“任務”。每個批處理都是一個任務,除了任務本身之外,任務也存在成功和失敗等等狀態,所以可以引出兩個概念 JobInstance 與 JobExecution 。job 是一個接口,JobInstance 是其實現,代表了“任務”本身,提供了 getJobName、getInstanceId 等方法供我們獲取任務本身的一些屬性。JobExecution 代表任務的狀態,如創建時間、結束時間、結束狀態、拋出的異常等等。

Step

“步驟”。批處理任務肯定有非常多的步驟,如一個最基本的數據庫同步,從 A 數據庫讀取數據,存入到 B 數據庫中,這里就分為了兩個步驟。在 Spring Batch 中,一個任務可以有很多個步驟,每個步驟大致分為三步:讀、處理、寫,其對應的類分別就是 Item Reader,Item Processor,Item Writer。

JobLauncher

“任務裝置”。如火箭發射裝置就是用來操作火箭發射的,這里的任務裝置就是用來執行任務的。

到此這篇關于手把手教你搭建第一個Spring Batch項目的步驟的文章就介紹到這了,更多相關Spring Batch項目搭建內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲影视一区二区三区| 国产乱码精品| 高清av一区| 老司机精品视频在线播放| 国产精品嫩模av在线| 日本91福利区| 国产精品一区二区99| 久久影院一区二区三区| 免费在线观看一区| 国产精品成久久久久| 美女网站视频一区| 亚洲欧美日韩专区| 亚洲欧洲日韩| 国产精品22p| 日本激情一区| 久久久久午夜电影| 国产农村妇女精品一区二区| 在线观看亚洲精品福利片| 日本国产欧美| 久久亚洲黄色| 久久久久久久久丰满| 亚洲一区激情| 国产日韩欧美一区在线| 91综合视频| 国产精品美女久久久| 欧美日韩黄网站| 91综合网人人| 亚洲综合日本| 免费视频一区二区三区在线观看| 97精品在线| 丝袜美腿一区二区三区| 欧美久久香蕉| 日韩国产一区二区| 久久大逼视频| 国产极品一区| 99视频精品全国免费| 综合激情一区| 国产一区福利| 伊人国产精品| 久久久亚洲欧洲日产| 999国产精品永久免费视频app| 亚洲制服少妇| 国产videos久久| 久久国产精品99国产| 国产精品99精品一区二区三区∴| 欧美一区二区性| 欧美一级久久| 日韩电影免费在线观看| 亚洲深深色噜噜狠狠爱网站 | 不卡在线一区二区| 欧美亚洲免费| japanese国产精品| 国产精品22p| 视频一区欧美精品| 福利视频一区| 午夜视频一区二区在线观看| 国产一区二区精品久| 蜜臀久久99精品久久久久久9| 国产精品欧美一区二区三区不卡| 99精品视频在线| 18国产精品| 亚洲精品网址| 国产一区2区| 日韩av三区| 欧美+亚洲+精品+三区| 国产精品乱战久久久| 在线视频亚洲| 日韩久久精品| 国产精品久久久久77777丨| 婷婷丁香综合| 成人综合一区| 国产精品一区二区精品视频观看 | 日本91福利区| 黑丝一区二区三区| 成人精品动漫一区二区三区| 日本不卡一二三区黄网| 欧美亚洲国产精品久久| 精品久久亚洲| 亚洲精品美女91| 伊人精品一区| 日韩.com| 久久国产日韩欧美精品| 国产一区视频在线观看免费| 国产精品99久久精品| 国产欧美日韩视频在线| 免费在线视频一区| 亚洲91精品| 91亚洲人成网污www| 国产精品久久久久久av公交车| 亚洲精品乱码| 蜜芽一区二区三区| 欧洲激情综合| 亚洲91视频| 在线天堂资源www在线污| 久久精品xxxxx| 五月亚洲婷婷 | 精品久久福利| 国产剧情在线观看一区| 亚洲欧洲av| 久热综合在线亚洲精品| 中文精品在线| 激情婷婷综合| 成人福利av| 成午夜精品一区二区三区软件| 欧美亚洲免费| 91成人精品在线| 日本一区中文字幕| 综合国产精品| 亚洲精品免费观看| 日韩在线一区二区| 国产精品色网| 影院欧美亚洲| 国产视频欧美| 国产精品毛片一区二区三区| 夜夜嗨一区二区| 国产精品三上| 免费一区二区视频| 亚洲免费播放| 午夜亚洲精品| 一区二区国产精品| 涩涩涩久久久成人精品| 最新亚洲国产| 日韩激情一区二区| 国产情侣一区在线| 国产精品中文字幕亚洲欧美| 国产精品久久久久久久免费软件| 国产精品流白浆在线观看| 免费亚洲婷婷| 国产精品麻豆久久| 精精国产xxxx视频在线播放| 久久一区二区中文字幕| 亚洲精品一二三区区别| 一区二区视频欧美| 视频一区在线播放| 欧美一区成人| 欧美激情麻豆| 日本一区二区高清不卡| 中文字幕系列一区| 欧美午夜不卡影院在线观看完整版免费| 国产亚洲一区在线| 日韩av一级片| 黄色网一区二区| 91精品一区二区三区综合| 国产亚洲午夜| 欧美日韩18| 91视频精品| 夜久久久久久| 亚洲ww精品| 国产精品久久久久毛片大屁完整版 | 国产欧美三级| 久久久久久婷| 亚洲欧美日韩国产一区| 日韩av午夜在线观看| 精品久久亚洲| 久久人人99| 日韩一区二区三区在线看| 国产欧美日韩精品一区二区三区| 国产成人精品一区二区三区视频 | 日韩专区欧美专区| 国产精品久久777777毛茸茸| 欧美黄色网页| 在线一区二区三区视频| 国产精品久久久久久久久久久久久久久| 国产精品99一区二区三| 一本色道精品久久一区二区三区| 青青国产91久久久久久| 91日韩在线| 蜜桃视频在线观看一区二区| 麻豆成人91精品二区三区| 欧美日韩高清| 国产欧美精品久久| 欧美三区四区| 日本中文字幕不卡| 成人片免费看| 日韩在线成人| 成人三级高清视频在线看| 午夜宅男久久久| 国产一区二区亚洲| 免播放器亚洲| 麻豆一区二区三| 香蕉久久久久久久av网站| 卡一卡二国产精品| 亚洲精品97| 老牛国内精品亚洲成av人片 | 亚洲一区二区三区四区五区午夜| 欧美交a欧美精品喷水| 欧美日韩免费观看一区=区三区 | 蜜桃一区二区三区在线| 四虎国产精品免费观看| 中文字幕日韩亚洲| 国产不卡人人| 欧美日韩亚洲一区三区| 激情五月色综合国产精品| 国产精品va| 中文字幕一区二区精品区| 人人精品亚洲| 国产图片一区| 免费日韩av片| 三级小说欧洲区亚洲区| 国产欧美欧美|