javascript
SpringBatch 读取JSON(JsonItemReader)用法(十一)
文章目錄
- 一、抽取順序讀取數(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)題。
- 上一篇: SpringBatch tasklet实
- 下一篇: SpringBatch 写文件JSON(