spring batch 通过配置文件的方法读文件
spring batch提供了多种方式读数据,比如读文件,读数据库,读xml等,提供了丰富了实现类操作,也可以根据自己的需求实现接口ItemReader去自定义。
工作中我们常用的是读文件(.csv、.txt等格式文件)和读数据库。
这里主要讲读一般文件的配置方式:
<batch:job id="readGoodsFileJob"><batch:step id="readGoodsFileStep" next="readGoodsFileCleanStep"><batch:tasklet><batch:chunk reader="goodsFileReader" processor="goodsFileProcessor" writer="goodsFileWrite" commit-interval="10"/></batch:tasklet></batch:step></batch:job><bean id="goodsFileReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> <!-- 省略 --></bean>
<bean id="goodsFileProcessor" class="com.jason.batch.project.job.dirjob.GoodsProcessor" scope="step"/><bean id="goodsFileWrite" class="com.jason.batch.project.job.dirjob.GoodsWrite" scope="step"/>
1.读文件需要到的类
读文件一般使用类 org.springframework.batch.item.file.FlatFileItemReader。此类负责读取文件内容,并讲读取的内容转换成我们需要的实体类,主要通过LineMapper的子类DefaultLineMapper实现。
下面是DefaultLineMapper源码:在DefaultLineMapper类中 LineTokenizer 负责将文件中的数据转换成FieldSet对象,FieldSetMapper负责将FieldSet转换成对应的实体类对象。
具体的层次关系如下:
FlatFileItemReader:--属性:lineMapper 实现类:DefaultLineMapper--属性:lineTokenizer 实现类:DelimitedLineTokenizer--属性:fieldSetMapper 实现类:BeanWrapperFieldSetMapper
2.具体的JOB配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:batch="http://www.springframework.org/schema/batch"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-3.0.xsd"><!-- 读取本地flat文件(逗号,分隔的) --><batch:job id="readGoodsFileJob"><batch:step id="readGoodsFileStep" next="readGoodsFileCleanStep"><batch:tasklet><batch:chunk reader="goodsFileReader" processor="goodsFileProcessor" writer="goodsFileWrite" commit-interval="10"/></batch:tasklet></batch:step></batch:job><bean id="goodsFileReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"><property name="resource" value="file:D:/test/batch-file/goods_list_20190720"/><!-- 配置文件路径 --><property name="encoding" value="UTF-8"/><property name="linesToSkip" value="1"/><!-- 表示跳过文件的第一行,一般我们处理文件有表头的,都会忽略的 --><property name="skippedLinesCallback" ref="skipLinesCallbackHandler"/><!-- 处理跳过的数据 --><property name="strict" value="false"/><property name="lineMapper"><bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"><property name="lineTokenizer"><bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"><property name="names" value="goodsName,goodsType,number,price"/><property name="delimiter" value="|"/><!-- 默认分割方式是逗号, --></bean></property><property name="fieldSetMapper"><bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"><property name="targetType" value="com.jason.batch.project.job.dirjob.GoodsModel"/></bean></property></bean></property></bean><bean id="goodsFileProcessor" class="com.jason.batch.project.job.dirjob.GoodsProcessor" scope="step"/><bean id="goodsFileWrite" class="com.jason.batch.project.job.dirjob.GoodsWrite" scope="step"/></beans>
其中goodsFileProcessor和goodsFileWrite各自实现了接口 ItemProcessor 和 ItemWriter,并没有逻辑上的处理。
源码在:https://github.com/chenghaojason/jason
spring batch 通过配置文件的方法读文件相关推荐
- spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库
tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...
- Spring batch教程 之 读取CSV文件并写入MySQL数据库
原文作者: Steven Haines - 技术架构师 编写批处理程序来处理GB级别数据量无疑是种海啸般难以面对的任务,但我们可以用Spring Batch将其拆解为小块小块的(chunk). Spr ...
- 具有Spring Boot和Java配置的Spring Batch教程
我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...
- Spring Batch之读数据—读混合记录文件(三十)
一.读混合记录文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)BatchMain.jav ...
- Spring Batch之读数据—读JSON文件(二十八)
一.JSON文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)BatchMain.java ...
- Spring Batch之读数据—读分隔符文件(二十六)
一.分隔符文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)启动类BatchMain.ja ...
- Spring Batch之读数据—读带有头文件的文件(三十一)
一.项目实例 1.项目框架 2.代码实现 BatchMain.java: package com.xj.demo26;import org.springframework.batch.core.Job ...
- spring batch 读mysql_spring batch csv文件导入到mysql数据库
继续学习spring batch , 定义个 spring batch job, 将数据读入到 mysql 数据库中. 用数据库记录job 任务.所用到的jar包与第一篇文章(http://www.y ...
- spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库
好久没有写博客,换了一家新公司,原来的公司用的是spring,现在这家公司用的是spring boot.然后,项目组布置了一个任务,关于两个数据库之间的表同步,我首先想到的就是spring batch ...
最新文章
- 2017年高级二级计算机考试试题,2017年计算机二级高级Office考试试题操作题
- 月均活跃用户达1.3亿,B站高可用架构实践
- 联想u盘linux安装教程,联想笔记本用U盘安装 winXP系统教程
- 6、mysql中字段
- STM32工作笔记0070---图片显示实验
- dd-wrt 定时重连 pppoe 更换ip地址
- 分布式事务解决方案之TX-LCN的使用
- 计算机专业计算机二级java有用吗_计算机二级java含金量如何 对就业有帮助吗
- SpringBoot_MD5加密工具类
- matlab coder 转 c语言,MATLAB Coder从MATLAB生成C/C++代码步骤
- C语言初学者如何制作一个完整的C语言程序——歌曲排行榜
- HTTP断点续传以及缓存问题
- MTK 8788(I500P)核心板 技术资料
- GitHub 代码托管平台提交代码时 emoji 表情的使用
- SystemSoftware
- 【图解HTTP】——返回结果的HTTP状态码
- 帧率、码率、分辨率、清晰度概念
- D. Martial Arts Tournament
- Github的wiki编写
- 阿里巴巴区签约重庆,这些合作亮点你不得不知!