# springc **Repository Path**: geekcheng_admin/springc ## Basic Information - **Project Name**: springc - **Description**: 为web应用开发者提供基于springboot2.1.9的快速开发框架, 提供一套基于springboot+mybatisPlus+redisson+log4j2+swagger2框架的最佳实践配置。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://my.oschina.net/u/4101481 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2020-12-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、 springc 1.0版本介绍 为web应用开发者提提供一套基于springboot+mybatisPlus+redisson+log4j2+swagger2框架的最佳实践配置。 主要功能有: 1. redis缓存切面 2. redis锁切面 3. mybatis插件,分布式环境下自动生成唯一键; 自动完成updateTime、createdTime、operator修改; 自定义TypeHandler规范JDK1.8时间类型,枚举类型;慢sql打印; 注入自定义通用方法; 原MybatisPlus删除方法用其自带的定制化插件在逻辑删除的情况下不能进行自动填充。 这里对mybatisPlus的删除方法进行了重写,保证在伪删除的情况也能自动填充值。 4. 查询接口转导出exl的切面。 5. 统一异常处理 6. 接口参数日志打印 7. 打印日志策略的最佳实践。 8. 限流熔断 使得开发者不必进行多于配置,能够专注于业务代码。 # 二、 模块说明 ## (一)必引用模块 ### 1.com.cman777.springc.common包 定义一些基础bean,以及一些工具类。 ### 2.com.cman777.springc.swagger包 配置了swagger2。 ### 3.com.cman777.springc.mybatis - 定义了mybatis插件,打印慢sql, - 结合mybatisPlus配置了主键生成策略为redis生成,operatorId,createdDate,stateDate,state自动填充 - 添加Enum4DBIFace枚举的typeHandler - 添加sql注入通用service的updateAllColumnById方法(mybatisPlus3.0之后删除了该方法)。 ### 4.com.cman777.springc.logger - 引入了log4j2,配置了按时间分片,应用过滤器机制 - 将springcloud的日志以及慢sql日志打印到专门的日志文件 ### 5.com.cman777.springc.redis - 封装配置了redisson,按MVC的objectMapper配置序列化、反序列化, - 提供分布式锁切面,缓存切面 ### 6.com.cman777.springc.web - 配置了JDK1.8时间相关类的序列化、反序列化策略。 - 添加日志切面打印切面。 - 封装用户id、ip等到RequestHolder的线程本地变量中,以及应用了MDC机制,方便看日志。 - 对全局异常进行了处理。 ## (二)选引用模块 ### 1.com.cman777.springc.poi - 提供一个切面将查询接口的结果直接导出到exl。 ### 2.com.cman777.springc.mybatisgenerator - 提供一个方法根据数据库表逆向自动生成service、mapper、xml。 ### 3.com.cman777.springc.plus - 并没有实际内容,只是整合所有模块,提供以上所有模块的引用,方便一次性引入 ### 4.com.cman777.springc.ratelimiter - 基于固定时间窗口时间算法的限流小框架 ### 5.com.cman777.springc.idempotence - 幂等框架 ### 6.com.cman777.springc.springali - springcloud阿里巴巴,待完善 ## (三)应用例子模块 ### com.cman777.springc.sample 提供了接口与配置的举例。 # 三、如何开始 主要参考例子sample模块,用户只需要在开发之初完成以下事情: 1. 引入plus包 2. 在resource/mybatisgenerator文件夹新建mybatisgenerator.properties, 完成自动生成mapper、service、xml的相关配置。 3. 调用JavaFileGenerator.generateJavaFile(MybatisGeneratorProperties properties)完成代码生成。 4. 其他的就跟springboot差不多了。 # 四、注 目前没有提供太多的可配置项。存在的限制有: 1. 默认项目是用的伪删除 2. 约定数据库表里面应该有created_date,state_date,state,operator_id这些基础信息。 3. 约定了请求参数包含operatorId,当然没有也行。 4. 分布式相关的框架暂时还没集成进来,暂时支持小型项目没什么问题,如果是分布式架构,需要自己适配。 5. 若需修改springboot版本,可以直接修改springc父模块pom文件继承的parent。引用jar包中,只要springboot 版本管理中规定了版本号的都是以用springboot这一层管理的。