缓存:redis 安全框架:shiro 文档框架:swagger2 持久层框架:Mybatis plus 开源工具:hutool ,全部你想要的工具,里面几乎都有,包括excel导出导入 https://www.hutool.club/docs/#/
一、基于MyBatis plus基本的CRUD 二、RedisUtil已封装,可以使用 三、Shiro下的权限认证、角色认证、Session过时认证,异地登陆检查,单机版、分布式皆适用 四、动态多数据源 https://mp.baomidou.com/guide/dynamic-datasource.html 五、swagger2 六、统一的报文处理,异常处理、请求日志打印(AOP) 七、归入了很是丰富的工具类 hutool https://github.com/changyu3590/hutool.git 八、支持事务 九、定时任务 十、基于mybatis-plus的审计(公共字段自动填充)
aop:html
这里主要用于切面日志,就是输出日志git
base:github
基础的常量类:redis
哈哈,就一个Excel模板存放的地址;spring
父类Controller:跨域
如今里面只有个全局异常的处理,全部的Exception会捕捉到这里,而后集中处理返回自定义报文,方便统一异常报文格式浏览器
父类Service:缓存
里面只有个变量。。。用于自动装配Dao接口的,后面有业务service的话,能够先直接继承这个Service,泛型里直接传入对应的Dao类就能够用了:this.dao.xxxxxxx();安全
ServiceException:这个没啥可看的就是自定义异常,为了规范,业务中时常要本身抛出一些业务异常,配合全局异常捕获,随时随地抛出。可千万不能retrun到controller,再以一个map返回去,这样很容易出Bug。cookie
StartupRunner:
程序启动后加载,这里你能够根据业务须要写你想要的,没啥事就打个日志就能够了。
TimeoutException:
同ServiceException,专门用来返回超时或异地登陆的报文的
config:
WebMvcListener:
它主要负责跨域配置、控制哪些路由须要进入Interceptor拦截器,哪里不须要。@Bean那里用于把Interceptor交给spring管理,生产单例的对象,没啥可要说的。
Interceptor:
preHandler首先会被触发。一般我这里主要用于异地登陆检查,由于结合了shiro,浏览器每次请求都会传递cookie里的sessionId,这里就是结合sessionId,实现了一个异地登陆检查。若是项目没有引入shiro的话,这里可能彻底用于本身设计的token的校验检查,看看每次用户发送的Request里传过来的token是否还存在在redis中,不存在就盘他,存在就刷新过时时间,固然key通常是token,value通常是当前用户信息。
AutoTableField:
用的是mybatis plus里的自动填充注解,@TableField(value = "create_by", fill = FieldFill.INSERT) ,这个注解标注的字段将会在这个类里面实现,主要用于建立时间、修改时间、建立人、修改人。
MybatisConfig:
配置分页插件,照这样写就行了。
RedisConfig、RedisUtil:没啥可说的,配置+封装,而后就能够用了。
CustomeRelam:
shiro中最重要的实现部分,主要实现用户密码认证(后续的session过时认证,也会由shiro自动处理)、填装用户信息到Subject里方便后续直接从Subject里取得在线用户信息。再一个就是获取角色权限信息,配合@RequireRoles、@RequirePermissions,这两个注解会检查你AuthorizationInfo中加载的当前用户的角色及权限。
ShiroConfig:
shiro的所有配置就在这里,这里粘贴了部分代码,如图可看到它设定了哪些路由是须要anno即不检查session的,剩下的都会authc就是检查session信息,没登陆就滚一边去。固然一些静态资源须要放醒,例如swagger。因为单机版几乎在商业中不存在,因此shiro最好配合redis,让shiro自动将session存储到redis,用redis管理session。
ScheduledConfig:
自带的定时任务配置类,足够用了。 具体怎么用,面向百度,很简单。
Controller
UserController:本身写的一个关于用户的接口,demo而已。
dao
RoleDao、UserDao:持久层接口,继承了BaseMapper CRUD就一套都有了。下图展现其中一个dao
dto:
GeneralResponseDto:
自定义交互报文,要求全部的报文返回统一该改格式返回。
entity:实体类
User:
实体类,注解都是mybatis plus里的注解,并继承了AttributeEntity
serviceimp:业务层 没啥可说的,里面就是一些demo,夹杂了一个mybatis plus的分页查询。
resources:
mapper:mybatis xml都在这里
application.yml: 公共配置
application-dev.yml: 本地配置
红框中数据源的配置格式基于mybatis plus中的多数据源配置, 参考官方文档便可
banner.txt:个性化的输出
最后附上该项目的仓库地址:
https://gitee.com/yuchang1/spring-demo 还有个同款jpa的以下: https://gitee.com/yuchang1/spring-demo-jpa