SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fork!

最近由于项目需要开始研究SpringBatch,并且将其整合到SpringBoot中,去除繁杂的xml配置,使用注解,基于约定优于配置的思路进行整合。做到可以非常简单的根据业务需求进行配置,添加新的Batch。

该项目的主要整合了Spring,SpringBoot,Mybatis,DBCP等常用框架,支持DB读写分离。一个注解即可添加新的Batch。

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实际项目改造的更多相关文章

  1. SpringBoot整合SpringBatch

    一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...

  2. SpringBoot整合Mybatis之项目结构、数据源

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  3. SpringBoot整合SpringBatch实用简例

    SpringBatch主要是一个轻量级的大数据量的并行处理(批处理)的框架. 作用和Hadoop很相似,不过Hadoop是基于重量级的分布式环境(处理巨量数据),而SpringBatch是基于轻量的应 ...

  4. SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)

    前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...

  5. SpringBoot整合Jsp和Thymeleaf (附工程)

    前言 本篇文章主要讲述SpringBoot整合Jsp以及SpringBoot整合Thymeleaf,实现一个简单的用户增删改查示例工程.事先说明,有三个项目,两个是单独整合的,一个是将它们整合在一起的 ...

  6. SpringBoot整合Redis使用Restful风格实现CRUD功能

    前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...

  7. SpringBoot整合Swagger和Actuator

    前言 本篇文章主要介绍的是SpringBoot整合Swagger(API文档生成框架)和SpringBoot整合Actuator(项目监控)使用教程. SpringBoot整合Swagger 说明:如 ...

  8. Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]

    Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了. nested exception is j ...

  9. Springboot整合MongoDB的Docker开发,其它应用也类似

    1 前言 Docker是容器开发的事实标准,而Springboot是Java微服务常用框架,二者必然是会走到一起的.本文将讲解如何开发Springboot项目,把它做成Docker镜像,并运行起来. ...

随机推荐

  1. s2h-HTTP Status 404 - No result defined for action and result input错误解决

    今天做个小项目,用的是ssh,结果在运行的时候出现HTTP Status 404 - No result defined for action and result input的错误. 首先认真检查所 ...

  2. linux上Docker安装gogs私服亲测(详解)

    一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...

  3. Nginx(1)---安装及基础命令

    一.简述 Nginx是一个高性能WEB服务器,除它之外Apache.Tomcat.Jetty.IIS,它们都是Web服务器 Nginx  相对基它WEB服务有什么优势:Tomcat.Jetty 面向j ...

  4. python工业互联网监控项目实战5—Collector到opcua服务

    本小节演示项目是如何从连接器到获取Tank4C9服务上的设备对象的值,并通过Connector服务的url返回给UI端请求的.另外,实际项目中考虑websocket中间可能因为网络通信等原因出现中断情 ...

  5. Java 基础之详解 Java IO

    Java IO基本概念 Java IO:即Java输入/输出系统,区分Java的输入和输出:把自己当成程序, 当你从外边读数据到自己这里就用输入(InputStream/Reader), 向外边写数据 ...

  6. 宝塔利用git+ webhooks 实现git更新远程同步Linux服务器

    参考: https://blog.csdn.net/alipea/article/details/83858177 https://www.bt.cn/bbs/thread-5348-1-1.html ...

  7. php 推荐密码加密的方法

    password_hash() 函数 password_hash() 函数用于创建密码的散列(hash) PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默认). ...

  8. php 可变变量 $$name

    //可变变量 $name = 'abc'; $$name = '; echo $name . "<br/>"; // abc echo $$name . echo $a ...

  9. 关于VUE的路由地址问题

    目前我们VUE的项目都是单页面应用,路由地址全都是#以不同的锚点去分发,根目录就是 http://localhost:8080/index#/   (至于为什么不是http://localhost:8 ...

  10. jQuery动态时钟

    效果图: 引用的jQuery.js自己百度 代码: <!DOCTYPE html> <html> <head> <meta charset="utf ...