日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

SpringBatch 读取JSON(JsonItemReader)用法(十一)

發(fā)布時(shí)間:2025/1/21 javascript 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBatch 读取JSON(JsonItemReader)用法(十一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 一、抽取順序讀取數(shù)據(jù)庫(kù)公共reader
    • 二、processor
    • 三、配置讀取json數(shù)據(jù)job
    • 四、執(zhí)行job

前言:在一些業(yè)務(wù)場(chǎng)景中,可能需要讀取json,來(lái)做業(yè)務(wù)邏輯處理,SpringBatch已經(jīng)幫我們封裝好了讀取JSON的reader

SpringBatch其它文章直通車:

  • SpringBatch讀單個(gè)文件(FlatFileItemReader)和寫單個(gè)文件(FlatFileItemWriter)(一)
  • SpringBatch順序讀取多文件(MultiResourceItemReader)和順序?qū)懳募?MultiResourceItemWriter)(二)
  • SpringBatch讀數(shù)據(jù)庫(kù)(MyBatisPagingItemReader)(三)
  • SpringBatch讀文件(FlatFileItemReader)寫據(jù)庫(kù)(MyBatisBatchItemWriter)(四)
  • SpringBatch 監(jiān)聽器之Job監(jiān)聽器(JobExecutionListener)和Step監(jiān)聽器(StepExecutionListener)(五)
  • SpringBatch 監(jiān)聽器之Chunk監(jiān)聽器(ChunkListener)和Skip監(jiān)聽器(SkipListener)(六)
  • SpringBatch 多線程(TaskExecutor)啟動(dòng)Job詳解 (七)
  • SpringBatch 配置并行啟動(dòng)Job詳解 (八)
  • SpringBatch 批處理分區(qū)(Partitioner )分片(九)
  • SpringBatch tasklet實(shí)現(xiàn)和用法(十)

代碼已上傳GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch

一、抽取順序讀取數(shù)據(jù)庫(kù)公共reader

該JsonItemReader是JSON實(shí)現(xiàn) org.springframework.batch.item.json.JsonObjectReader接口。此接口旨在通過(guò)使用流API以塊的形式讀取JSON對(duì)象來(lái)實(shí)現(xiàn)。目前提供兩種實(shí)現(xiàn)方式:

jaskJson: org.springframework.batch.item.json.JacksonJsonObjectReader

Gson:org.springframework.batch.item.json.GsonJsonObjectReader

json 數(shù)據(jù)格式為:

[{"id": "12","catname": "小白","catage": "1","cataddress": "foo"},{"id": "13","catname": "小嘿","catage": "2","cataddress": "boo"} ]

CommonJsonItemReader繼承JsonItemReader

package com.sl.common;import org.springframework.batch.item.json.JsonItemReader; import org.springframework.batch.item.json.JsonObjectReader; import org.springframework.core.io.Resource;/*** @author shuliangzhao* @Title: CommonJsonItemReader* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/17 20:00*/ public class CommonJsonItemReader<T> extends JsonItemReader<T> {public CommonJsonItemReader(Resource resource, JsonObjectReader<T> jsonObjectReader) {super(resource, jsonObjectReader);setJsonObjectReader(jsonObjectReader);setName("tradeJsonItemReader");setResource(resource);} }

二、processor

package com.sl.processor;import com.sl.common.CommonProcessor; import com.sl.entity.CafeCat; import com.sl.entity.Cat; import org.springframework.batch.core.configuration.annotation.StepScope; import org.springframework.stereotype.Component;/*** @author shuliangzhao* @Title: CatJsonProcessor* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/17 20:14*/ @Component @StepScope public class CatJsonProcessor extends CommonProcessor<Cat, CafeCat> {@Overridepublic void processor(CafeCat o, Cat cat) {o.setCatname(cat.getCatname());o.setCatage(cat.getCatage());o.setCataddress(cat.getCataddress());} }

三、配置讀取json數(shù)據(jù)job

package com.sl.config;import com.sl.common.CommonFileItemWriter; import com.sl.common.CommonJsonItemReader; import com.sl.entity.CafeCat; import com.sl.entity.Cat; import com.sl.processor.CatJsonProcessor; import org.springframework.batch.core.Job; 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.configuration.annotation.StepScope; import org.springframework.batch.item.json.JacksonJsonObjectReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.FileSystemResource;/*** json文件處理* @author shuliangzhao* @Title: CatJsonConfiguration* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/17 19:59*/ @Configuration @EnableBatchProcessing public class CatJsonConfiguration {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate CatJsonProcessor catJsonProcessor;@Beanpublic Job catJsonJob() {return jobBuilderFactory.get("catJsonJob").start(catJsonStep()).build();}@Beanpublic Step catJsonStep() {return stepBuilderFactory.get("catJsonStep").<Cat, CafeCat>chunk(10).reader(commonJsonItemReader()).processor(catJsonProcessor).writer(cafeCatJsonCommonFileItemWriter()).build();}@Bean@StepScopepublic CommonJsonItemReader<Cat> commonJsonItemReader() {FileSystemResource fileSystemResource = new FileSystemResource("D:\\aplus\\shuqian\\target\\"+Cat.class.getSimpleName()+".json");return new CommonJsonItemReader(fileSystemResource,new JacksonJsonObjectReader<>(Cat.class));}@Bean@StepScopepublic CommonFileItemWriter<CafeCat> cafeCatJsonCommonFileItemWriter() {return new CommonFileItemWriter<>(CafeCat.class);} }

四、執(zhí)行job

執(zhí)行job ,寫文件

總結(jié)

以上是生活随笔為你收集整理的SpringBatch 读取JSON(JsonItemReader)用法(十一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。