电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:2日期: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
相關文章:
主站蜘蛛池模板: 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 噪声治理公司-噪音治理专业隔音降噪公司 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 步入式高低温测试箱|海向仪器| 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 光照全温振荡器(智能型)-恒隆仪器| 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | LINK FASHION 童装·青少年装展 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 深圳市万色印象美业有限公司| 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 福建自考_福建自学考试网 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 |