springc 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
springc 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
springc 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
springc 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
springc 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

一、 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这一层管理的。
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
2020/10/26 18:28

手写一个限流组件

项目结构 collector 抽象收集限流相关字段信息职责 collector.target 与收集器对应的字段信息dto,比如ip,用户id,手机号等等。 rule 抽象限流规则 Dimension 维度,包含Collector名称,与需要收集的字段逗号分隔...

0
0
发表于开发技能专区
2018/01/27 18:25

Lua在Redis中的应用

redis从2.6版本开始内置支持Lua解释器,解释器提供了3个函数来处理redis的命令redis.call() redis.pcall()和 redis.log,同时redis 也保证脚本会以原子性的方式执行。这是一个很重要的因素。 本文涉及到的命令有 ...

0
0
发表了博客
2015/10/10 22:15

J360-cloud SpringCloud系列二:服务发现Discovery Service

SpringCloud 提供了在分布式系统中快速构建工具(e.g. configuration management, service discovery, circuit breakers,intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state)...

3
8
2020/11/07 15:58

阿里内部首发Spring Cloud全套微服务架构笔记,速拿去怼面试官!

从spring到SpringBoot再到SpringCloud,现在“面试造火箭、入职拧螺丝”从微服务的发展史上就可以展现得淋漓尽致,除了像阿里那种大型互联网公司外,很少会用到SpringCloud,但是你又不得不去学习,因为你出去面试...

0
0
2020/11/11 15:20

阿里微服务神仙笔记开源分享!-从Spring到SpringBoot再到SpringCloud,

从spring到SpringBoot再到SpringCloud,现在“面试造火箭、入职拧螺丝”从微服务的发展史上就可以展现得淋漓尽致,除了像阿里那种大型互联网公司外,很少会用到SpringCloud,但是你又不得不去学习,因为你出去面试...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部