⚡渠道简介⚡
AgileBoot是一套开源的全栈精简快速开发渠道,毫无保留给个人及企业免费运用。本项目的目标是做一款精简可靠,代码风格优秀,项目标准的小型开发脚手架。
合适个人开发者的小型项目或许公司内部项目运用。也可作为供初学者学习运用的模板项目。
- 前端选用Vue3、Element UI。对应前端仓库 AgileBoot-Front-End ,保持同步更新。
- 后端选用Spring Boot、Spring Security、Redis & Jwt、Mybatis Plus、MySql。
- 权限认证运用Jwt,支撑多终端认证体系。
- 支撑加载动态权限菜单,多方法轻松权限操控。
- 有很多的单元测验,集成测验覆盖确保事务逻辑正确。
有任何问题或许建议,能够在 Issues 中提给作者。 也能够发PR。
您的Issue比Star更重要
假如觉得项目对您有协助,能够来个 ⭐ Star ⭐
在线体验
演示地址:
- www.agileboot.vip
- www.agileboot.cc
账号暗码:admin/admin123
项目地址:
- github.com/valarchie/A…
- github.com/valarchie/A…
- 码云gitee有对应地址进行同步
项目布景
本项目依据Ruoyi项目进行彻底重构改造。
首先十分感谢Ruoyi作者。可是Ruoyi项目存在太多缺点。
- 命名比较杂乱无章(许多很糟糕的命名,包括机翻英语乱用)
- 项目分包以及模块比较乱
- 比较原始的Controller > Service > DAO的开发模式。过于面向过程。
- 一大堆自己造的轮子,而且没有UT覆盖。
- 很多逻辑嵌套在if else块当中
- 值的前后不一致,比方有的当地1代表是,有的当地1代表否
- 许多很奇怪的代码写法(比方return result > 0 ? true:false.. 一言难尽)
- 事务逻辑不会集,代码可读性较差。
许多人直接运用开源项目二开,可是代码不标准,可保护性不高,导致运用者的二开的本钱比较高。
所以我做了很多的重构作业。
重构内容
- 标准:
- 切分不同环境的发动文件
- 一致规划反常类
- 一致规划错误码并会集处理反常
- 一致体系内的变量并会集办理
- 一致回来模型
- 引进Google代码格式化模板
- 后端代码的命名基本都整改OK
- 前端代码的命名也十分混乱,进行了整改
- 标准体系内的常量
- 整改:
- 引进hutool包以及guava包去掉很多自己造的轮子,尽可能运用现成的轮子
- 去除代码中很多的warning
- 引进lombok去除很多getter setter代码
- 调整日志级别
- 字典类型数据彻底用Enum进行代替
- 移除SQL注入的Filter,由于迁移到Mybatis Plus就不会有这个注入的问题
- XSS直接经过JSON序列化进行转义。
- 替换掉许多Deprecated的类以及装备
- 替换fastJson为Jackson
- 数据库的全体重构规划,缩减至10张表。
- 从头规划异步代码
- 前后端暗码加密传输(更严谨的话,还是需要HTTPS)
- 重构权限校验和数据权限校验(直接都经过注解的方法)
- 优化:
- 优化异步服务
- 优化Redis缓存类,封装各个事务缓存,供给多级缓存完结
- 权限判别运用多级缓存
- IP地址查询引进离线包
- 前端优化字典数据缓存
- 发动优化
- i18n支撑
- 优化excel东西类,代码更加简练
- 将一切逻辑会集于Domain模块中
- 切面记录修正者和创建者
- 一致设置事务
✨ 运用 ✨
技术栈
技术 | 说明 | 版本 |
---|---|---|
springboot |
Java项目必备结构 | 2.7 |
druid |
alibaba数据库连接池 | 1.2.8 |
swagger |
文档生成 | 3.0.0 |
mybatis-plus |
数据库结构 | 3.5.2 |
hutool |
国产东西包(简略易用) | 3.5.2 |
mockito |
单元测验模仿 | 1.10.19 |
guava |
谷歌东西包(供给简易缓存完结) | 31.0.1-jre |
junit |
单元测验 | 1.10.19 |
h2 |
内存数据库 | 1.10.19 |
jackson |
比较安全的Json结构 | follow springboot |
体系内置功用
大部分功用,均有经过 单元测验 集成测验 保证质量。
功用 | 描述 | |
---|---|---|
用户办理 | 用户是体系操作者,该功用主要完结体系用户装备 | |
⭐ | 部分办理 | 装备体系组织组织(公司、部分、小组),树结构展示支撑数据权限 |
⭐ | 岗位办理 | 装备体系用户所属担任职务 |
菜单办理 | 装备体系菜单、操作权限、按钮权限标识等,本地缓存供给功能 | |
⭐ | 人物办理 | 人物菜单权限分配、设置人物按组织进行数据范围权限划分 |
参数办理 | 对体系动态装备常用参数 | |
告诉公告 | 体系告诉公告信息发布保护 | |
操作日志 | 体系正常操作日志记录和查询;体系反常信息日志记录和查询 | |
登录日志 | 体系登录日志记录查询包含登录反常 | |
在线用户 | 当时体系中活泼用户状况监控 | |
体系接口 | 依据事务代码自动生成相关的api接口文档 | |
服务监控 | 监督当时体系CPU、内存、磁盘、堆栈等相关信息 | |
缓存监控 | 对体系的缓存信息查询,指令统计等 | |
连接池监督 | 监督当时体系数据库连接池状况,可进行分析SQL找出体系功能瓶颈 |
现在版本是V1.6,将在2.0版本后陆续新增新功用。
工程结构
agileboot
├── agileboot-admin -- 办理后台接口模块(供后台调用)
│
├── agileboot-api -- 敞开接口模块(供客户端调用)
│
├── agileboot-common -- 精简基础东西模块
│
├── agileboot-infrastructure -- 基础设施模块(主要是装备和集成)
│
├── agileboot-domain -- 事务模块
├ ├── user -- 用户模块(举例)
├ ├── command -- 指令参数接收模型(指令)
├ ├── dto -- 回来数据类
├ ├── model -- 范畴模型类
├ ├── query -- 查询参数模型(查询)
│ ├────── UserApplicationService -- 应用服务(事务层,操作范畴模型类完结事务逻辑)
│
├── agileboot-integration-test -- 集成测验模块
│
├── agileboot-orm -- 数据映射模块(仅包含数据相关逻辑)
├ ├── entiy -- 实体类
├ ├── enums -- 数据相关枚举
├ ├── mapper -- DAO
├ ├── query -- 封装查询目标
├ ├── result -- 封装多表查询目标
└── └── service -- 服务层
代码流转
请求分为两类:一类是查询,一类是操作(即对数据有进行更新)。
查询:Controller > xxxQuery > xxxApplicationService > xxxService(Db) > xxxMapper
操作:Controller > xxxCommand > xxxApplicationService > xxxModel(处理逻辑) > save 或许 update (本项目直接选用JPA的方法进行插入已经更新数据)
技术文档
- AgileBoot – 依据SpringBoot + Vue3的前后端快速开发脚手架
- AgileBoot – 手把手一步一步带你Run起全栈项目(SpringBoot+Vue3)
- AgileBoot – 项目内一致的错误码规划
- AgileBoot – 怎么集成内置数据库H2和内置Redis
- 继续输出中
最后
本项目的目标是做一款精简可靠,代码风格优秀,项目标准的小型开发脚手架。
合适个人开发者的小型项目或许公司内部项目运用。也可作为供初学者学习运用的案例。
期望大佬们有兴趣的话~ 能够一起来完善这个项目,让这个项目更标准,代码更好保护,真实成为一款能作为出产直接运用的开源项目。
PS: 鄙人前端小白,仅在对应的ruoyi原版前端项目上做了大约50%的重构。才能有限,有没有前端大佬一起来重构一下前端项目呀~~ 现在打算改成TS。
全栈技术交流群:1398880