當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBatch 写文件JSON(JsonFileItemWriter)用法(十二)
生活随笔
收集整理的這篇文章主要介紹了
SpringBatch 写文件JSON(JsonFileItemWriter)用法(十二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、抽取寫出json文件公共writer
- 二、processor
- 三、配置寫json文件job
- 四、執行job
前言:在一些業務場景中,可能需要寫出json,來做業務邏輯處理,SpringBatch已經幫我們封裝好了寫出JSON的writer
SpringBatch其它文章直通車:
- SpringBatch讀單個文件(FlatFileItemReader)和寫單個文件(FlatFileItemWriter)(一)
- SpringBatch順序讀取多文件(MultiResourceItemReader)和順序寫文件(MultiResourceItemWriter)(二)
- SpringBatch讀數據庫(MyBatisPagingItemReader)(三)
- SpringBatch讀文件(FlatFileItemReader)寫據庫(MyBatisBatchItemWriter)(四)
- SpringBatch 監聽器之Job監聽器(JobExecutionListener)和Step監聽器(StepExecutionListener)(五)
- SpringBatch 監聽器之Chunk監聽器(ChunkListener)和Skip監聽器(SkipListener)(六)
- SpringBatch 多線程(TaskExecutor)啟動Job詳解 (七)
- SpringBatch 配置并行啟動Job詳解 (八)
- SpringBatch 批處理分區(Partitioner )分片(九)
- SpringBatch tasklet實現和用法(十)
- SpringBatch 讀取JSON(JsonItemReader)用法(十一)
代碼已上傳GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
一、抽取寫出json文件公共writer
該JsonFileItemWriter 將項目的編組委托給 org.springframework.batch.item.json.JsonObjectMarshaller接口。該接口的約定是獲取一個對象并將其marshall為JSON字符串。目前提供兩種實現方式:
Jackson:org.springframework.batch.item.json.JacksonJsonObjectMarshaller
GsonJson:Gsonorg.springframework.batch.item.json.GsonJsonObjectMarshaller
CommonJsonItemWriter 繼承JsonFileItemWriter
package com.sl.common;import org.springframework.batch.item.json.JsonFileItemWriter; import org.springframework.batch.item.json.JsonObjectMarshaller; import org.springframework.core.io.Resource;/*** @author shuliangzhao* @Title: CommonJsonItemWriter* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/18 19:54*/ public class CommonJsonItemWriter<T> extends JsonFileItemWriter<T> {public CommonJsonItemWriter(Resource resource, JsonObjectMarshaller<T> jsonObjectMarshaller) {super(resource, jsonObjectMarshaller);setResource(resource);setJsonObjectMarshaller(jsonObjectMarshaller);setEncoding("UTF-8");setName("tradeJsonFileItemWriter");} }二、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: CatWriteJsonProcessor* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/18 20:00*/ @Component @StepScope public class CatWriteJsonProcessor extends CommonProcessor<Cat, CafeCat> {@Overridepublic void processor(CafeCat o, Cat cat) {o.setCatname(cat.getCatname());o.setCatage(cat.getCatage());o.setCataddress(cat.getCataddress());} }三、配置寫json文件job
package com.sl.config;import com.sl.common.CommonFileItemReader; import com.sl.common.CommonJsonItemWriter; import com.sl.entity.CafeCat; import com.sl.entity.Cat; import com.sl.processor.CatWriteJsonProcessor; 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.JacksonJsonObjectMarshaller; 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;/*** 讀取csv文件,寫出json* @author shuliangzhao* @Title: CatWriteJsonConfiguration* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/18 19:56*/ @Configuration @EnableBatchProcessing public class CatWriteJsonConfiguration {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate CatWriteJsonProcessor catWriteJsonProcessor;@Beanpublic Job catWriteJsonJob() {return jobBuilderFactory.get("catWriteJsonJob").start(catWriteJsonStep()).build();}@Beanpublic Step catWriteJsonStep() {return stepBuilderFactory.get("catWriteJsonStep").<Cat, CafeCat>chunk(10).reader(catReadCsvItemReader()).processor(catWriteJsonProcessor).writer(commonJsonItemWriter()).build();}@Bean@StepScopepublic CommonFileItemReader<Cat> catReadCsvItemReader() {return new CommonFileItemReader<>(Cat.class);}@Bean@StepScopepublic CommonJsonItemWriter commonJsonItemWriter() {FileSystemResource fileSystemResource = new FileSystemResource("D:\\aplus\\shuqian\\source\\"+ CafeCat.class.getSimpleName() + ".json");return new CommonJsonItemWriter(fileSystemResource,new JacksonJsonObjectMarshaller());} }四、執行job
寫出json文件:
總結
以上是生活随笔為你收集整理的SpringBatch 写文件JSON(JsonFileItemWriter)用法(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBatch 读取JSON(J
- 下一篇: SpringBatch 读取xml文件(