SpringBatch 简单示例
来源:互联网 发布:学校资产管理系统源码 编辑:程序博客网 时间:2024/04/28 08:36
场景说明
个人使用信用卡消费,银行定期发送银行卡消费账单,本例模拟银行处理个人信用卡消费对账单对账,银行需要定期地把个人消费的记录导出成CSV格式的文件,然后交给对账系统处理,本例模拟银行读入CSV文件,经过处理后,生成新的对账单。
项目结构
CreditBill.java :表示信用卡消费记录领域对象
CreditBillProcessor.java :记录处理类,本场景中没有任何业务操作,仅打印账单信息。
JobLaunch.java :调用批处理作业类。
JobLaunchTest.java : JUnit单元测试类,使用Spring提供的测试框架类。
credit-card-bill-201303.csv:原始账单文件,存放账单消费条目。
job.xml:作业定义文件
job-context.xml:SpringBatch批处理任务需要的基本信息。
CreditBill.java
/** * 信用卡对账单模型.<br> * @author bruce.liu(mailto:jxta.liu@gmail.com) * 2013-1-6下午09:56:02 */public class CreditBill { private String accountID = ""; /** 银行卡账户ID */ private String name = ""; /** 持卡人姓名 */ private double amount = 0; /** 消费金额 */ private String date; /** 消费日期 ,格式YYYY-MM-DD HH:MM:SS*/ private String address; /** 消费场所 **/
job-context.xml
job-context.xml 定义了批处理任务中需要的基础设施,主要配置有 作业仓库、作业调度器、事务管理器
<!-- 作业仓库 --> <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> </bean> <!-- 作业调度器 --> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository"/> </bean> <!-- 事物管理器 --> <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/>
作业仓库:在SpringBatch框架中,任何任务的操作都会被记录在作业仓库中,SpringBatch提供了两种仓库,一种是内存的,另外一种是数据库的。
作业调度器:用来启动job。
事务管理器:用于在SpringBatch框架中对数据操作过程中提供事物的能力
定于对账job
job.xml中定义批处理作业billJob,billJob共有一个Step,命名为billStep,包含读、处理、写三个操作。
<job id="billJob"> <step id="billStep"> <tasklet transaction-manager="transactionManager"> <chunk reader="csvItemReader" writer="csvItemWriter" processor="creditBillProcessor" commit-interval="2"> </chunk> </tasklet> </step> </job>
<chunk reader="csvItemReader" writer="csvItemWriter" processor="creditBillProcessor" commit-interval="2"> </chunk>
csvItemReader负责从文件credit-card-bill-201303.csv中读取数据,creditBillProcessor负责处理文件中的每一行数据,csvItemWriter负责将creditBillProcessor处理的数据写到文件outputFile.csv中;
commit-interval=2,表示提交间隔的大小,即每处理2条数据,进行一次写入操作
csvItemReader配置
<!-- 读取信用卡账单文件,CSV格式 --> <bean:bean id="csvItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> <bean:property name="resource" value="classpath:credit-card-bill-201303.csv"/> <bean:property name="lineMapper"> <bean:bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> <bean:property name="lineTokenizer" ref="lineTokenizer"/> <bean:property name="fieldSetMapper"> <bean:bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"> <bean:property name="prototypeBeanName" value="creditBill"> </bean:property> </bean:bean> </bean:property> </bean:bean> </bean:property> </bean:bean> <!-- lineTokenizer --> <bean:bean id="lineTokenizer" class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> <bean:property name="delimiter" value=","/> <bean:property name="names"> <bean:list> <bean:value>accountID</bean:value> <bean:value>name</bean:value> <bean:value>amount</bean:value> <bean:value>date</bean:value> <bean:value>address</bean:value> </bean:list> </bean:property> </bean:bean>
- SpringBatch 简单示例
- SpringBatch前言
- SpringBatch简介
- SpringBatch简介
- SpringBatch基本概念
- SpringBatch JobExecution
- SpringBatch详解
- springMVC+springBatch
- SpringBatch的领域概念
- springbatch简介与helloworld
- springbatch操作CSV文件
- springbatch操作XML文件
- springbatch操作DB
- SpringBatch的领域概念
- 跑批利器--SpringBatch
- SpringBatch配置数据库
- Springbatch的原理
- SpringBatch Step StepExecution
- linux firewall 浅谈
- rabbitMQ简介
- 《C缺陷与陷阱》读书笔记
- Wireless Throughput Calculations and Limitations
- 不允许EditText自动获取焦点
- SpringBatch 简单示例
- 蚂蚁&大象
- eclipse 创建maven web项目
- 一大早来求助,UI的神人们在哪里,看看这个效果怎么实现
- JVM的基本结构及其各部分详解(一)
- 重新设置MySQL的root密码:
- Avalon-MM and Avalon-ST
- Android真机测试的时候一连接电脑Eclipse就无响应
- 查询外键关联表(父表)