最近因项目需要开始使用spring batch作为批处理方案,结合Quartz开发定时批处理任务。此次的模块开发中使用了spring、mybatis。
另外需要说明:官方文档中是结合spring boot使用,如果项目中使用了spring boot的同学不需要像本文中一样还是使用xml配置定义job、step等。
一、spring batch
spring batch:建立在Spring框架的基础之上,它遵循Spring的惯例.spring batch包括日志/跟踪,事务管理,作业处理统计,作业重新启动,跳过和资源管理。
二、spring batch 适用环境
1. 比如商城的提货通知,当某一批次物流到达后需要通知用户提货。
2. 缴费扣款、续订等业务:当前业务触发则进行查询、读取适用信息,再根据业务逻辑进行扣款、或者通知业务,完成后批量写入库。
3. 优惠券等:优惠券到期、发放等。
4. 等等等等。
三、spring batch 基本组成:Job、setp、ItemReader、ItemProcessor、ItemWriter、Partitioner
1. org.springframework.batch.core.Job:batch Job,同时也是执行Job的入口;
2. org.springframework.batch.core.Step:job中的step,提供了执行Step的能力;
3. org.springframework.batch.item.ItemReader<T>:读数据(包括文件、数据库等)提供了读取数据的能力;
4. org.springframework.batch.item.ItemProcessor<T>:业务处理(自定义业务)我们可以通过它应用业务逻辑到每一条要处理的数据;
5. org.springframework.batch.item.ItemWriter<T>:写数据(包括文件、数据库等)提供了写数据的能力;
6. org.springframework.batch.core.partition.support.Partitioner:参数处理、传递,包括任务中传递的参数,根据需求传递的参数等
附录
1. [ IBM developerworks 详细介绍了spring batch的使用 ](http://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/)
2. [spring.io](http://projects.spring.io/spring-batch/#quick-start)
3. [Spring Batch中文文档](https://kimmking.gitbooks.io/springbatchreference/content/01_introduction/11.html)
如有疑问请加公众号(K171),如果觉得对您有帮助请 github start
网友评论