⚡渠道简介⚡

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