SpringBoot 整合SpringBatch实际项目改造
SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fork!
最近由于项目需要开始研究SpringBatch,并且将其整合到SpringBoot中,去除繁杂的xml配置,使用注解,基于约定优于配置的思路进行整合。做到可以非常简单的根据业务需求进行配置,添加新的Batch。
该项目的主要整合了Spring,SpringBoot,Mybatis,DBCP等常用框架,支持DB读写分离。一个注解即可添加新的Batch。
1、/db目录下的sql为当前项目所用到的ddl
2、项目运行参数说明
- batchName(required) : 该batch名称,例如运行bat00X,则参数为:batchName=bat00X
- logging.config(optional) : log配置所在的位置,通常本地运行时不需要关心此参数。在发布到开发机或本番时需要传入。格式:logging.config=${filePath},例如运行bat00X,则参数为:logging.config=classpath:logback-bat00X.xml
3、src/main/java工程结构说明
- com.cml.learning.framework 为框架基础配置包,通常情况不做修改
- com.cml.learning.module 为每个batch对应的模块信息,需要开发者自己实现
4、src/main/resource工程结构说明
- application.properties 全局配置properties
- logback.xml 默认的log配
- config/jdbc-r.properties 只读db配置
- config/jdbc-rw.properties 读写db配置
- config/log 每个batch对应的log配置
- config/module 每个batch对应的properties配置信息
5、项目约定说明
- 每个batch类都需要添加注解@BatchAnnotation用于标识batch运行环境
每个batch对应有自己的Configuration,用于配置SpringBatch运行信息
所有batch统一在包(com.cml.learning.module)下,根据batch名称定义包名
如: com.cml.learning.module.batch001
每个batch继承com.cml.learning.framework.module.BaseModule并且实现接口 com.cml.learning.framework.constant.ModuleConst
- 只读Mapper需要继承com.cml.learning.framework.mybatis.marker.ReadMapper,并且Mapper名称以ReadMaper结尾
- 只读Mapper对应的xml以read.sql.xml结尾,且名称为当前batch名,例如bat001的只读xml为:bat001.read.sql.xml
- 读写Mapper需要继承com.cml.learning.framework.mybatis.marker.WriteMapper,并且Mapper名称以WriteMapper结尾
- 读写Mapper对应的xml以write.sql.xml结尾,并且名称为当前batch名,,例如bat001的读写xml为:bat001.write.sql.xml
- DB所对应的bean在每个batch下的beans包下,如bat001 对应的bean在包:com.cml.learning.module.bat001.beans下,Mybatis 会自动扫描此包下对应的bean
- processor,reader,writer都有对应的基类,每个batch下对应的模块都需要继承对应的基类。
该项目会不断完善,如有意见或建议,欢迎提出。
SpringBoot 整合SpringBatch实际项目改造的更多相关文章
- SpringBoot整合SpringBatch
一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- SpringBoot整合Mybatis之项目结构、数据源
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
- SpringBoot整合SpringBatch实用简例
SpringBatch主要是一个轻量级的大数据量的并行处理(批处理)的框架. 作用和Hadoop很相似,不过Hadoop是基于重量级的分布式环境(处理巨量数据),而SpringBatch是基于轻量的应 ...
- SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...
- SpringBoot整合Jsp和Thymeleaf (附工程)
前言 本篇文章主要讲述SpringBoot整合Jsp以及SpringBoot整合Thymeleaf,实现一个简单的用户增删改查示例工程.事先说明,有三个项目,两个是单独整合的,一个是将它们整合在一起的 ...
- SpringBoot整合Redis使用Restful风格实现CRUD功能
前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...
- SpringBoot整合Swagger和Actuator
前言 本篇文章主要介绍的是SpringBoot整合Swagger(API文档生成框架)和SpringBoot整合Actuator(项目监控)使用教程. SpringBoot整合Swagger 说明:如 ...
- Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]
Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了. nested exception is j ...
- Springboot整合MongoDB的Docker开发,其它应用也类似
1 前言 Docker是容器开发的事实标准,而Springboot是Java微服务常用框架,二者必然是会走到一起的.本文将讲解如何开发Springboot项目,把它做成Docker镜像,并运行起来. ...
随机推荐
- tensorflow1.0 队列FIFOQueue管理实现异步读取训练
import tensorflow as tf #模拟异步子线程 存入样本, 主线程 读取样本 # 1. 定义一个队列,1000 Q = tf.FIFOQueue(1000,tf.float32) # ...
- ES6中对函数的扩展
ES6一路扩展,字符串.数组.数值.对象无一“幸免”,ES6说要雨露均沾,函数也不能落下,今天,就来讲解ES6对函数的扩展. 参数的默认值 在开发中,给函数的参数指定默认值,是很普遍很常见的一个需求, ...
- tp3.2的__construct和_initialize方法
在tp3.2框架里面,有一个php自带的__construct()构造函数和tp3自带的构造函数_initialize()的实行顺序是先实行 php自带的__construct()构造函数 再实行 t ...
- 消息中间件之zookper安装部署
消息中间件之zookper安装部署jdk可以在官网或者网上下载[root@q tools]# chmod 755 jdk-8u40-linux-x64.rpm [root@q tools]# rpm ...
- java1-3总结 19201421-吴志越
关于最近几次作业,从C语言到Java的过渡,也就是从面向过程到面向对象的过渡.其中,一共有三次作业,前俩次可能更加偏向于过程的设计,利用C语言的想法就可以完成,但是,从需要使用类的开始,就逐渐向对象偏 ...
- 基于规则的分类——RIPPER算法
在<分类:基于规则的分类技术>中已经比较详细的介绍了基于规则的分类方法,RIPPER算法则是其中一种具体构造基于规则的分类器的方法.在RIPPER算法中,有几个点是算法的重要构成部分,需要 ...
- 限流 - Guava RateLimiter
2019独角兽企业重金招聘Python工程师标准>>> 限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦并发访问/请求达到限制速率或者 ...
- centos6.X修改ssh默认端口号
先查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 新ss ...
- LNMP环境搭建之php安装
和LAMP安装PHP方法有差别,需要开启php-fpm服务 下载php cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6 ...
- 【20180129】java进程经常OOM,扩容swap。
导读:线上一台服务器专门做为公司内部apk打包服务,由于app的业务和功能与时俱增,apk打包需要依赖的资源越来越多,最近这几天每次apk打包的时候都会由于OOM导致打包失败.由于apk打包业务并不是 ...