# Gringotts
A batch-processing system based on Spring Boot and Sping Batch.
## Introduction
在百度的工作中,自己独立完成了两套基于SpringBatch的批处理系统,用在文件处理、对账、清结算、订单批处理等场景。
Gringotts这是一个基于Spring boot和Spring batch的简单的批处理系统示例。
你或许可以从这得到:
1. How to construct a simple spring boot system
2. How to integrate spring batch into spring boot
3. How to use most spring batch components (Validator, Partitioner, Listener, etc.)
4. How to make a Mybatis quick start.
## Database configuration
### MysqlServer
1. install mysql server
2. start mysql server
3. log in with *mysql -u root -p*
4.
```sql
create database gringotts_db CHARACTER SET 'utf8';
create user 'gringotts'@'localhost' IDENTIFIED BY 'gringotts';
grant all privileges on gringotts_db.* to gringotts@localhost;
```
### Tables
首先需要创建Spring Batch所需的表,可以在spring batch的core jar包中找到。
另外,我创建了三张表:
1. **batch\_file\_config** 文件处理配置表,用于配置需要处理的文件,到达expect\_time之后,创建今日的batch\_schedule,然后导出文件至local\_file\_path。我在最后insert了一条示例
2. **batch\_schedule** 批处理调度表,用于记录导出文件的调度情况,每天一个调度,记录调度状态
3. **batch\_detail** 批处理明细表,用于记录导入导出的明细
```sql
CREATE TABLE `batch_file_config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1 - 可用,2 - 不可用',
`item_id` varchar(32) NOT NULL DEFAULT '' COMMENT '产品id',
`schedule_freq` varchar(32) NOT NULL DEFAULT '' COMMENT '调度频率',
`remote_file_path` varchar(256) NOT NULL DEFAULT '' COMMENT '文件远程路径',
`local_file_path` varchar(256) NOT NULL DEFAULT '' COMMENT '文件本地路径',
`expect_time` datetime NOT NULL DEFAULT '2001-01-01 02:00:00' COMMENT '预计处理时间',
`extension` varchar(256) NOT NULL DEFAULT '' COMMENT '扩展信息',
`description` varchar(128) NOT NULL DEFAULT '' COMMENT '配置描述',
`create_time` datetime NOT NULL DEFAULT '2000-00-00 00:00:00' COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT '2000-00-00 00:00:00' COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='文件配置表';
CREATE TABLE `batch_schedule` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1 - 可用,2 - 不可用',
`config_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '配置id',
`schedule_no` varchar(64) NOT NULL DEFAULT '' COMMENT '调度编号',
`schedule_date` varchar(32) NOT NULL DEFAULT '' COMMENT '调度日期',
`schedule_status` varchar(64) NOT NULL DEFAULT '' COMMENT '批次状态',
`memo` varchar(128) NOT NULL DEFAULT '' COMMENT '备注',
`total_count` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '总笔数',
`excp_count` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '异常笔数',
`extension` varchar(256) NOT NULL DEFAULT '' COMMENT '扩展字段',
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_schedule_no` (`schedule_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='批处理调度表';
CREATE TABLE `batch_detail` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1 - 可用,2 - 不可用',
`schedule_no` varchar(64) NOT NULL DEFAULT '' COMMENT '批次号',
`record_no` varchar(64) NOT NULL DEFAULT '' COMMENT '记录编号',
`record_type` varchar(32) NOT NULL DEFAULT '' COMMENT '记录类型',
`item_id` varchar(32) NOT NULL DEFAULT '' COMMENT 'item id',
`user_id` varchar(32) NOT NULL DEFAULT '' COMMENT '用户ID',
`record_state` varchar(32) NOT NULL DEFAULT '' COMMENT '记录状态',
`extension` varchar(5120) NOT NULL DEFAULT '' COMMENT '扩展字段',
`memo` varchar(128) NOT NULL DEFAULT '' COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_schedule_record` (`schedule_no`,`record_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='批处理明细表';
INSERT INTO `batch_file_config` (`enabled`, `item_id`, `schedule_freq`, `remote_file_path`, `local_file_path`, `expect_time`, `extension`, `description`, `create_time`, `modify_time`) VALUES (1, '11', 'everyday', '', '/Users/troywang/TestSchedule1_YYYYMMDD.txt', '2018-04-02 11:00:00', '', 'TestSchedule1', now(), now);
```
### Spring boot properties
```java
spring.datasource.url=jdbc:mysql://localhost:3306/gringotts_db?characterEncoding=utf8&useUnicode=true&useSSL=false
spring.datasource.username=gringotts
spring.datasource.password=gringotts
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.batch.initialize-schema=always
spring.batch.job.enabled=false
```
### MyBatis
使用mybatis_gen文件夹下的gen.sh生成DAO层。
```bash
sh gen.sh
```
## Logback configuration
```java
logging.file=foo.log
logging.level.com.troywang=DEBUG
```
## Tomcat configuration
```java
server.port=8089
server.servlet.context-path=/
```
## FileProcessJob
#### datasource配置
见 BatchDbConfiguration
#### Job构成
![flow](https://github.com/Troy-Wang/Gringotts/blob/master/imgs/flow.jpg)
#### Let's get started
```bash
curl -X GET "http://localhost:8089/jobLauncher?jobName=demoJob&date=20180405"
```
## Tips
> Caused by: java.lang.NullPointerException: null
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997) ~[mysql-connector-java-5.1.40.jar:5.1.40]
upgrade mysql-connector-java version
> Invalid default value for 'create_time'
```sql
show variables like 'sql_mode';
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
```
没有合适的资源?快使用搜索试试~ 我知道了~
A batch-processing system base on Spring Boot and Spring Bat.zip
共78个文件
java:59个
xml:5个
properties:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 156 浏览量
2024-05-14
13:50:07
上传
评论
收藏 2.38MB ZIP 举报
温馨提示
该项目利用了基于springboot + vue + mysql的开发模式框架实现的课设系统,包括了项目的源码资源、sql文件、相关指引文档等等。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
资源推荐
资源详情
资源评论
收起资源包目录
A batch-processing system base on Spring Boot and Spring Bat.zip (78个子文件)
manualType.properties 10B
SpringBatch_Gringotts-master
mvnw.cmd 5KB
pom.xml 4KB
src
test
java
com
troywang
GringottsApplicationTests.java 332B
main
resources
application.properties 492B
mappers
com
troywang
dal
entity
BatchFileConfigDoMapper.xml 14KB
BatchScheduleDoMapper.xml 14KB
BatchDetailDoMapper.xml 14KB
java
com
troywang
web
controller
JobLaucherController.java 3KB
dal
mapper
BatchDetailDoMapper.java 1KB
BatchFileConfigDoMapper.java 1KB
BatchScheduleDoMapper.java 1KB
dao
BatchScheduleDao.java 563B
condition
BatchFileConfigCondition.java 264B
BatchScheduleCondition.java 593B
BatchFileConfigDao.java 325B
impl
BatchScheduleDaoImpl.java 2KB
BatchFileConfigDaoImpl.java 1KB
entity
BatchFileConfigDoExample.java 30KB
BatchScheduleDoExample.java 31KB
BatchDetailDoExample.java 32KB
BatchFileConfigDo.java 2KB
BatchDetailDo.java 2KB
BatchScheduleDo.java 2KB
db
BatchDbConfiguration.java 1KB
biz
job
FileProcessJobConfiguration.java 5KB
DemoJobConfiguration.java 1KB
enums
ScheduleStatusEnum.java 664B
ScheduleTypeEnum.java 949B
model
JobContextModel.java 408B
BatchDetailExportModel.java 1KB
constants
JobConstants.java 225B
DeciderConstants.java 236B
batch
decider
WeekendDecider.java 863B
processor
CreateScheduleProcessor.java 2KB
BatchDetailExportProcessor.java 1KB
EmptyProcessor.java 589B
callback
ExportFooterCallback.java 393B
tasklet
CtxInitTasklet.java 1KB
writer
ScheduleCreateWriter.java 3KB
EmptyWriter.java 534B
FileWriters.java 3KB
partitioner
FileProcessPartitioner.java 2KB
validator
JobParamValidator.java 850B
listener
ExportStepExecutionListener.java 2KB
reader
BatchDetailReaders.java 3KB
EmptyReader.java 779B
KafkaReader.java 541B
FileConfigReaders.java 3KB
base
annotation
GringottsValidateUtil.java 1KB
GringottsValidator.java 516B
aggregator
FormatterByteLineAggregator.java 2KB
tokenizer
FixedByteLengthTokenizer.java 4KB
enums
GringottsErrorCodeEnum.java 620B
model
BaseResponse.java 1KB
exception
GringottsRetryableException.java 3KB
GringottsException.java 3KB
GringottsSkippableException.java 3KB
GringottsValidatorException.java 551B
util
RangeUtil.java 654B
ClassUtil.java 611B
DateUtil.java 13KB
RegexUtil.java 4KB
FileUtil.java 448B
JsonUtil.java 2KB
GringottsApplication.java 585B
.mvn
wrapper
maven-wrapper.properties 110B
maven-wrapper.jar 46KB
mybatis_gen
mysql-connector-java-8.0.11.jar 1.94MB
config.xml 2KB
gen.sh 179B
config.properties 259B
mvnw 6KB
.gitignore 289B
imgs
flow.jpg 613KB
README.md 6KB
系统.txt 7B
item.pdf 6B
共 78 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 7467
- 资源: 5106
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功