Agileboot 1.6.0 发布啦 - 一款致力于规范/精简/可维护 的Springboot + Vue3的快速开发脚手架
平台简介
AgileBoot是一套开源的全栈精简快速开发平台,毫无保留给个人及企业免费使用。本项目的目标是做一款精简可靠,代码风格优良,项目规范的小型开发脚手架。
适合个人开发者的小型项目或者公司内部项目使用。也可作为供初学者学习使用的模板项目。
- 前端采用Vue3、Element UI。对应前端仓库 AgileBoot-Front-End ,保持同步更新。
- 后端采用Spring Boot、Spring Security、Redis & Jwt、Mybatis Plus、MySql。
- 权限认证使用Jwt,支持多终端认证系统。
- 支持加载动态权限菜单,多方式轻松权限控制。
- 有大量的单元测试,集成测试覆盖确保业务逻辑正确。
有任何问题或者建议,可以在 Issues 中提给作者。 也可以发PR。
您的Issue比Star更重要
如果觉得项目对您有帮助,可以来个 Star
在线体验
演示地址:
账号密码:admin/admin123
项目地址:
- https://github.com/valarchie/AgileBoot-Back-End
- https://github.com/valarchie/AgileBoot-Front-End
- 码云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
Agileboot 1.6.0 发布啦 - 一款致力于规范/精简/可维护 的Springboot + Vue3的快速开发脚手架的更多相关文章
- 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布
Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. 强大的代 ...
- 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台
项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...
- AgileBoot - 基于SpringBoot + Vue3的前后端快速开发脚手架
AgileBoot 仓库 后端地址:https://github.com/valarchie/AgileBoot-Back-End 技术栈:Springboot / Spring Security / ...
- 基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布
Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读 平台首页UI升级,精美的首页支持多模式 提供4套代码生成器模板(支持单表.一对多) 集成Excel简易工具类,支持单表.一对多导入 ...
- JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台
此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...
- 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595
联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...
- 网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
网页动物园2.0发布,经过几个月的努力,采用JAVA编写! 网页动物园2.0 正式发布!游戏发布 游戏名称: 网页动物园插件 游戏来源: 原创插件 适用版本: Discuz! X1.5 - X3.5 ...
- Google 高性能 RPC 框架 gRPC 1.0.0 发布(附精彩评论)
gRPC是一个高性能.开源.通用的RPC框架,面向移动和HTTP/2设计,是由谷歌发布的首款基于Protocol Buffers的RPC框架. gRPC基于HTTP/2标准设计,带来诸如双向流.流控. ...
- RDIFramework.NET平台代码生成器V1.0发布(提供下载)
RDIFramework.NET平台代码生成器V1.0发布(提供下载) RDIFramework.NET(.NET快速开发整合框架)框架做为信息化系统快速开发.整合的框架,其目的一至是给用户和开发 ...
- Surging1.0发布在即,.NET开发者们,你们还在等什么?
Surging1.0发布在即,.NET开发者们,你们还在等什么? 开源,是近三十年来互联网经久不衰的话题.它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神. 不到30年前,大神林 ...
随机推荐
- Xcode模拟器simulators安装
启动Xcode 后打开菜单Xcode->Preferences...再点击Downloads就可以看到Xcode默认支持的iOS各版本 模拟器,如果还没有安装,只需要点击后面的下载箭头标识,Xc ...
- DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色
本文将告诉大家如何使用 Vortice 底层库从零开始,从一个控制台项目,开始搭建一个最简单的使用 Direct2D1 的 DirectX 应用.本文属于入门级博客,期望本文能让大家了解 Vortic ...
- [题解] Codeforces 1268 D Invertation in Tournament 结论,兰道定理
题目 本题需要用到的结论: 一.兰道定理 二.如果\(n\geq4\),那么\(n\)个点的强连通竞赛图存在\(n-1\)个点的强连通子图. 证明: 现在有一个n-1个点的竞赛图(不一定强连通,称其为 ...
- window安装MySQL 5.5教程
window安装MySQL 5.5教程 1.官网下载MySQL 5.5 下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads 2. ...
- MFC-创建MFC图形界面dll
创建MFC图形界面dll 概述: 利用MFC的DLL框架,制作带有图形界面的dll,可以实现很多功能. 流程: 选择静态链接MFC DLL:以免有的库没有. 采用该框架创建的MFC,会自动生产一个MF ...
- 【MySQL】Navicat15 安装
# Navicat安装` 提示`:鉴于之间已经出了MySQL的安装教程,在这了我也讲下,那个其实包含了两个知识点,既可以小白初次安装MySQL客户端,也面向想安装5.x和8.x两个版本的. --- @ ...
- 说说switch关键字
Switch语法 switch作为Java内置关键字,却在项目中真正使用的比较少.关于switch,还是有那么一些奥秘的. 要什么switch,我有if-else 确实,项目中使用switch比较少的 ...
- PYQT5 学习
zetcode教程 汉化版: https://maicss.gitbook.io/pyqt5-chinese-tutoral/ 官方网站: https://www.riverbankcomputing ...
- 修改服务器ssh端口
最近,访问公司虚拟机都需要通过堡垒机才能访问了,觉得麻烦.要想不受该规则限制,也有办法,可以通过修改虚拟机ssh端口解决. 下面做个介绍. 1. 通过堡垒机登录虚拟机 2. 修改虚拟机ssh端口 编辑 ...
- 我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
第三期 · 使用 Vue 3.1 + Axios + Golang + Mysql + Gin 实现页面详情页 使用 Gin 框架重写后端 Gin Web Framework (gin-gonic.c ...