Spring batch 三个基本元素reader processor writer

这三个类之间会自动传值,reader返回list给processor处理完数据后返回list给writer

这时batch job 会继续调用reader 的read()方法,如果不作任何操作,job会按照上面的步骤一直执行下去。

需要在reader里面设置一个flag,当文件读完以后返回null,job就会自动停下来了。

public class SupcIndvReader implements ItemReader<List<String>> {protected static transient Logger log = Logger.getLogger(SupcIndvReader.class);private boolean jobEnd = false;@Overridepublic List<String> read() throws Exception, UnexpectedInputException,ParseException, NonTransientResourceException {log.info("SupcIndvReader is being called");System.out.println("SupcIndvReader read() is being called");//if jobEnd is true,this method will return null,the job will be stoppedif(!jobEnd){StringBuffer FilePath = new StringBuffer();FilePath.append("C:\\Users\\P1312824\\Desktop\\MinLAW\\ipto_supc_indv_01102016_063002.txt");FileReader fReader = new FileReader(FilePath.toString());BufferedReader bReader = new BufferedReader(fReader);String str = null;List<String> fileLine = new ArrayList<String>();int newOCount = 0;int newHCount = 0;int realNewO = 0;int realNewH = 0;        while ((str = bReader.readLine()) != null) {if (str.length() == 18) {newOCount = Integer.valueOf(str.substring(9, 13));newHCount = Integer.valueOf(str.substring(15, 18));fileLine.add(str);}if (str.length() != 18 && str.length() != 10) {fileLine.add(str);}}bReader.close();// verify record and header have the same numberfor (String str1 : fileLine) {if ("1".equals(str1.substring(0, 1)) && str1.length() != 18) {realNewO++;}if ("2".equals(str1.substring(0, 1)) && str1.length() != 18) {realNewH++;}}if (newOCount != realNewO || newHCount != realNewH) {log.info("Record details are not sufficient!!");return null;}jobEnd = true;return fileLine;}jobEnd = false;return null;
}
}

spring batch的原则(避免停不下来)相关推荐

  1. [Spring Cloud Task]6 Spring Batch批处理应用设计原则

    2019独角兽企业重金招聘Python工程师标准>>> 概述 本文是Spring Cloud Task系列的第五篇文章,如果你尚未使用过Spring Cloud Task,请 移步s ...

  2. 首次使用批处理框架 Spring Batch ,被震撼到了,太强大...

    以下文章来源方志朋的博客,回复"666"获面试宝典 spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才 ...

  3. 批处理框架 Spring Batch 这么强,你会用吗?

    作者 | topEngineerray 来源 | blog.csdn.net/topdeveloperr/article/details/84337956 正文 spring batch简介 spri ...

  4. Spring Batch批量处理,骚气还强大!

    spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作.这些业务运营包括: 无需用户交互即可最有 ...

  5. Spring Batch 批量处理,骚气且强大!

    往期热门文章:1.IDEA新UI速览,成了VS Code的样子? 2.一个比传统数据库快 100-1000 倍的数据库 3.银行科技部半年!人间半个月! 4.当年那个手搓CPU的老哥回来了! 5.求求 ...

  6. 批处理框架spring batch基础知识介绍

    Table of Contents spring batch简介 Spring Batch架构介绍 Spring Batch核心概念介绍 什么是Job 什么是JobInstance 什么是JobPar ...

  7. spring Batch实现数据库大数据量读写

    spring Batch实现数据库大数据量读写 博客分类: spring springBatchquartz定时调度批处理  1. data-source-context.xml Xml代码   &l ...

  8. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  9. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  10. 配置 Spring Batch 批处理失败重试

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1. 引言 默认情况下,Spring批处理作业在执行过程中 ...

最新文章

  1. spdlog源码阅读 (1): sinks
  2. 冒泡排序(java实现)
  3. BOW模型在ANN框架下的解释
  4. linux history nginx,vue-router History 本地开发环境和nginx配置
  5. tomcat 、jsp、 servlet 、jstl版本对应
  6. 北京计算机一级2020,2020北京市一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...
  7. python数据清理_Python-数据清理
  8. C# - 接口,继承
  9. 如何利用 Google 开源的 TFCO 构建机器学习模型?
  10. 【深度学习】使用预训练模型
  11. cnpm安装webpack_【6000字】从0到1,配置webpack
  12. 苹果 Mac 上不显示外置硬盘?9 个必须尝试的修复方法
  13. Spring事务传播实验剖析(一)
  14. 微信开发者工具打开导入其他人的项目源码 修改appid
  15. 2021年终总结,我躺平了?
  16. (附源码)python飞机票销售系统 毕业设计 141432
  17. HDU-5773 The All-purpose Zero(LIS变形)
  18. 一個“語言”引發的血案
  19. 优化Android手机的GPS定位系统,加速搜星,定位准确
  20. (八十一)探索hidl-gen使用及IWifi.hal 实现

热门文章

  1. [CSP-S模拟测试]:Star Way To Heaven(最小生成树Prim)
  2. 谈谈This对象的理解
  3. 过滤器(Filter)解决跨域问题
  4. win10无法装载重装系统iso文件_win10镜像不能安装系统如何解决_win10镜像无法安装处理方法...
  5. 《人生哲理》二.人生苦短,别懂得太晚了...
  6. [Unity3d] [图文]【寻路】 Waypoint 与 NavMesh 比较(转)
  7. 如何用ppt做自我介绍
  8. mysql pdo 端口_pdo连接mysql
  9. 信道容量 matlab,离散无记忆信道容量的matlab算法
  10. 4-3 Vue的`:style`用法