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 通过配置文件的方法读文件相关推荐

  1. spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库

    tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...

  2. Spring batch教程 之 读取CSV文件并写入MySQL数据库

    原文作者: Steven Haines - 技术架构师 编写批处理程序来处理GB级别数据量无疑是种海啸般难以面对的任务,但我们可以用Spring Batch将其拆解为小块小块的(chunk). Spr ...

  3. 具有Spring Boot和Java配置的Spring Batch教程

    我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...

  4. Spring Batch之读数据—读混合记录文件(三十)

    一.读混合记录文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)BatchMain.jav ...

  5. Spring Batch之读数据—读JSON文件(二十八)

    一.JSON文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)BatchMain.java ...

  6. Spring Batch之读数据—读分隔符文件(二十六)

    一.分隔符文件 Spring Batch之读数据-Flat格式文件(二十四)_人--杰的博客-CSDN博客_flat文件 二.项目实例 1.项目框架 2.代码实现 (1)启动类BatchMain.ja ...

  7. Spring Batch之读数据—读带有头文件的文件(三十一)

    一.项目实例 1.项目框架 2.代码实现 BatchMain.java: package com.xj.demo26;import org.springframework.batch.core.Job ...

  8. spring batch 读mysql_spring batch csv文件导入到mysql数据库

    继续学习spring batch , 定义个 spring batch job, 将数据读入到 mysql 数据库中. 用数据库记录job 任务.所用到的jar包与第一篇文章(http://www.y ...

  9. spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库

    好久没有写博客,换了一家新公司,原来的公司用的是spring,现在这家公司用的是spring boot.然后,项目组布置了一个任务,关于两个数据库之间的表同步,我首先想到的就是spring batch ...

最新文章

  1. 2017年高级二级计算机考试试题,2017年计算机二级高级Office考试试题操作题
  2. 月均活跃用户达1.3亿,B站高可用架构实践
  3. 联想u盘linux安装教程,联想笔记本用U盘安装 winXP系统教程
  4. 6、mysql中字段
  5. STM32工作笔记0070---图片显示实验
  6. dd-wrt 定时重连 pppoe 更换ip地址
  7. 分布式事务解决方案之TX-LCN的使用
  8. 计算机专业计算机二级java有用吗_计算机二级java含金量如何 对就业有帮助吗
  9. SpringBoot_MD5加密工具类
  10. matlab coder 转 c语言,MATLAB Coder从MATLAB生成C/C++代码步骤
  11. C语言初学者如何制作一个完整的C语言程序——歌曲排行榜
  12. HTTP断点续传以及缓存问题
  13. MTK 8788(I500P)核心板 技术资料
  14. GitHub 代码托管平台提交代码时 emoji 表情的使用
  15. SystemSoftware
  16. 【图解HTTP】——返回结果的HTTP状态码
  17. 帧率、码率、分辨率、清晰度概念
  18. D. Martial Arts Tournament
  19. Github的wiki编写
  20. 阿里巴巴区签约重庆,这些合作亮点你不得不知!

热门文章

  1. 关于redis的BussinessName取法
  2. 电脑睡眠后启动 耳机没有声音 手动启动 -已解决
  3. 互联网技术研发管理之绩效管理提升
  4. e7用什么主板_八路E7的下场如何?盘点历代至尊版处理器现价
  5. C# 关键字 使用where来限定泛型约束
  6. GNSS TGD/DCB改正模型
  7. 高阳墙绘 墙体彩绘 手绘壁画赏析
  8. 大数据学习路线(完整详细版)
  9. flume 从基础到高阶
  10. 插入u盘计算机未响应,u盘启动电脑无反应,教您电脑插上U盘后无法启动解决方法...