当前位置:首页 > 技术 > 正文内容

Agileboot 1.6.0 发布啦 - 一款致力于规范/精简/可维护 的Springboot + Vue3的快速开发脚手架

Lotus2022-12-08 13:30技术

⚡平台简介⚡

AgileBoot是一套开源的全栈精简快速开发平台,毫无保留给个人及企业免费使用。本项目的目标是做一款精简可靠代码风格优良项目规范的小型开发脚手架。
适合个人开发者的小型项目或者公司内部项目使用。也可作为供初学者学习使用的模板项目。

  • 前端采用Vue3、Element UI。对应前端仓库 AgileBoot-Front-End ,保持同步更新。
  • 后端采用Spring Boot、Spring Security、Redis & Jwt、Mybatis Plus、MySql。
  • 权限认证使用Jwt,支持多终端认证系统。
  • 支持加载动态权限菜单,多方式轻松权限控制。
  • ???? 有大量的单元测试,集成测试覆盖确保业务逻辑正确。????

有任何问题或者建议,可以在 Issues 中提给作者。 也可以发PR。

您的Issue比Star更重要 ????

???? 如果觉得项目对您有帮助,可以来个 ⭐ Star ⭐

???? 在线体验 ????

演示地址:

账号密码:admin/admin123

项目地址:

???? 项目背景 ????

本项目基于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的方式进行插入已经更新数据)


???? 技术文档 ????

最后

本项目的目标是做一款精简可靠,代码风格优良,项目规范的小型开发脚手架。
适合个人开发者的小型项目或者公司内部项目使用。也可作为供初学者学习使用的案例。

希望大佬们有兴趣的话~ 可以一起来完善这个项目,让这个项目更规范,代码更好维护,真正成为一款能作为生产直接使用的开源项目。

PS: 鄙人前端小白,仅在对应的ruoyi原版前端项目上做了大概50%的重构。能力有限,有没有前端大佬一起来重构一下前端项目呀~~ 目前打算改成TS。

全栈技术交流群:1398880

原文链接

扫描二维码推送至手机访问。

版权声明:本文来源于网络,仅供学习,如侵权请联系站长删除。

本文链接:https://news.layui.org.cn/post/1136.html

分享给朋友:

“Agileboot 1.6.0 发布啦 - 一款致力于规范/精简/可维护 的Springboot + Vue3的快速开发脚手架” 的相关文章

详解机器学习中的数据处理(二)——特征归一化

摘要:在机器学习中,我们的数据集往往存在各种各样的问题,如果不对数据进行预处理,模型的训练和预测就难以进行。这一系列博文将介绍一下机器学习中的数据预处理问题,以\(\color{#4285f4}{U}\color{#ea4335}{C}\color{#fbbc05}{I}\)数据集为例详细介绍缺失值处理、连续特征离散化,特征归一化及离散特征的编码等问题,同时会附上处理的\(\color{#4...

[s905l3]性价比神机mgv3000全网首拆,刷armbian实现更多价值!

最近花55淘了一台mgv3000,s905l3,2+16G带蓝牙,真的性价比没得说 S905L3 工艺28nm差于s905l3a 主频1.9Ghz,超频可以达到2Ghz,GPU是Mail450,当服务器跑ha,nas什么都是很不错的。 而且还自带蓝牙,总体性价比比s905l3a系列高多了 按我的方法可以启动,网卡没有问题,但是目前没有显示,没有蓝牙。 等之后我有时间了照着安卓的dtb改一改也许会解...

Docker入门学习

1.运行第一个docker容器 docker run -i -t ubuntu /bin/bash 参数说明: -i, --interactive=false, 打开STDIN,用于控制台交互-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false-d, --detach=false, 指定容器运行于前台还是后台,默认为false 首先,docker run -it...

#打卡不停更#[图文并茂]Packstack部署train版openstack

Packstack部署openstack-train 介绍如何在centos7.9中使用packstack部署openstack-train。 首先需要安装一个最小化安装的centos7.9,按照你的网络环境配置好网络,然后重启。 这里我的环境是VMware虚拟机,ip是192.168.10.30. 首先我们需要关闭防火墙和NetworkManager systemctl disable --n...

css:利用伪类处理图片加载失败的样式问题

实现效果 实现代码 index.html <h2>未做错误处理</h2> <div style="font-size: 0"> <img src="./img/image.jpg" alt="" /> <img src="./img/image-1.jpg" alt="" /> &l...

Android平台实现mp4文件实时推送RTMP|轻量级RTSP服务|GB28181平台

好多开发者有这样的诉求,想把本地录制的MP4文件,以实时流数据的形式,推送到RTMP服务器,注入轻量级RTSP服务,或者对接到GB28181平台,这块前几年我们就有对接。 本次以MediaExtractor为例,先利用MediaExtractor,把mp4文件的音视频数据分离,然后调用我们publisher模块,实现编码后的数据对接到RTMP服务器、轻量级RTSP服务或GB28181平台即可,废...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。