valarchie / AgileBoot-Back-End

🔥 规范易于二开的全栈基础快速开发脚手架。🔥 采用Springboot + Vue 3 + Typescript + Mybatis Plus + Redis + 更面向对象的业务建模 + 面向生产的项目(非玩具项目)。你的 ⭐️ Star ⭐️,是作者更新的动力! 欢迎小伙伴PR,一起构建一个规范的全栈项目~😆
MIT License
1.81k stars 354 forks source link
ddd-example element-plus element-ui mybatis-plus mysql pinia redis springboot typescript vue3

Downloads Build Status Build Status Downloads Downloads Downloads

logo

AgileBoot v2.0.0

基于SpringBoot+Vue3前后端分离的Java快速开发脚手架

⚡平台简介⚡

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

V1.0.0版本使用JS开发,V2.0.0版本使用TS开发
V1.0.0地址:后端(AgileBoot-Back-End-Basic) - 前端(AgileBoot-Front-End-Basic)

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

您的Issue比Star更重要

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

💥 在线体验 💥

演示地址:

🌴 项目背景 🌴

业余时间想做一些个人小项目,一开始找了很多开源项目比如Ruoyi / Jeecg / ElAdmin / RenRen-Fast / Guns / EAdmin
最后本项目选择基于Ruoyi项目进行完全重构改造。
首先非常感谢Ruoyi作者。但是Ruoyi项目存在太多缺陷。

于是我做了大量的重构工作。

重构内容

✨ 使用 ✨

开发环境

技术栈

技术 说明 版本
springboot Java项目必备框架 2.7
druid alibaba数据库连接池 1.2.8
springdoc 文档生成 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
knife4j 接口文档框架 3.0.3
Spring Task 定时任务框架(适合小型项目) follow springboot

启动说明

前置准备: 下载前后端代码

git clone https://github.com/valarchie/AgileBoot-Back-End
git clone https://github.com/valarchie/AgileBoot-Front-End

安装好Mysql和Redis

后端启动

1. 生成所需的数据库表
找到后端项目根目录下的sql目录中的agileboot_xxxxx.sql脚本文件(取最新的sql文件)。 导入到你新建的数据库中。

2. 在admin模块底下,找到resource目录下的application-dev.yml文件
配置数据库以及Redis的 地址、端口、账号密码

3. 在根目录执行mvn install

4. 找到agileboot-admin模块中的AgileBootAdminApplication启动类,直接启动即可

5. 当出现以下字样即为启动成功
  ____   _                _                                                           __         _  _ 
 / ___| | |_  __ _  _ __ | |_   _   _  _ __    ___  _   _   ___  ___  ___  ___  ___  / _| _   _ | || |
 \___ \ | __|/ _` || '__|| __| | | | || '_ \  / __|| | | | / __|/ __|/ _ \/ __|/ __|| |_ | | | || || |
  ___) || |_| (_| || |   | |_  | |_| || |_) | \__ \| |_| || (__| (__|  __/\__ \\__ \|  _|| |_| || ||_|
 |____/  \__|\__,_||_|    \__|  \__,_|| .__/  |___/ \__,_| \___|\___|\___||___/|___/|_|   \__,_||_|(_)
                                      |_|                             

前端启动

详细步骤请查看对应前端部分

1. pnpm install

2. pnpm run dev

3. 当出现以下字样时即为启动成功

vite v2.6.14 dev server running at:

> Local: http://127.0.0.1:80/

ready in 4376ms.

详细过程在这个文章中:AgileBoot - 手把手一步一步带你Run起全栈项目(SpringBoot+Vue3)

对于想要尝试全栈项目的前端人员,这边提供更简便的后端启动方式,无需配置Mysql和Redis直接启动

无Mysql/Redis 后端启动


1. 找到agilboot-admin模块下的resource文件中的application.yml文件
  1. 配置以下两个值 spring.profiles.active: basic,dev 改为 spring.profiles.active: basic,test

agileboot.embedded.mysql: false agileboot.embedded.redis: false 改为 agileboot.embedded.mysql: true agileboot.embedded.redis: true

请注意:高版本的MacOS系统,无法启动内置的Redis

  1. 找到agileboot-admin模块中的AgileBootAdminApplication启动类,直接启动即可

🙊 系统内置功能 🙊

🙂 大部分功能,均有通过 单元测试 集成测试 保证质量。

功能 描述
用户管理 用户是系统操作者,该功能主要完成系统用户配置
部门管理 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限
岗位管理 配置系统用户所属担任职务
菜单管理 配置系统菜单、操作权限、按钮权限标识等,本地缓存提供性能
角色管理 角色菜单权限分配、设置角色按机构进行数据范围权限划分
参数管理 对系统动态配置常用参数
通知公告 系统通知公告信息发布维护
🚀 操作日志 系统正常操作日志记录和查询;系统异常信息日志记录和查询
登录日志 系统登录日志记录查询包含登录异常
在线用户 当前系统中活跃用户状态监控
系统接口 根据业务代码自动生成相关的api接口文档
服务监控 监视当前系统CPU、内存、磁盘、堆栈等相关信息
缓存监控 对系统的缓存信息查询,命令统计等
连接池监视 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈

🐯 工程结构 🐯

agileboot
├── agileboot-admin -- 管理后台接口模块(供后台调用)
│
├── agileboot-api -- 开放接口模块(供客户端调用)
│
├── agileboot-common -- 精简基础工具模块
│
├── agileboot-infrastructure -- 基础设施模块(主要是配置和集成,不包含业务逻辑)
│
├── agileboot-domain -- 业务模块
├    ├── user -- 用户模块(举例)
├         ├── command -- 命令参数接收模型(命令)
├         ├── dto -- 返回数据类
├         ├── db -- DB操作类
├              ├── entity -- 实体类
├              ├── service -- DB Service
├              ├── mapper -- DB Dao
├         ├── model -- 领域模型类
├         ├── query -- 查询参数模型(查询)
│         ├────── UserApplicationService -- 应用服务(事务层,操作领域模型类完成业务逻辑)

代码流转

请求分为两类:一类是查询,一类是操作(即对数据有进行更新)。

查询:Controller > xxxQuery > xxxApplicationService > xxxService(Db) > xxxMapper
操作:Controller > xxxCommand > xxxApplicationService > xxxModel(处理逻辑) > save 或者 update (本项目直接采用JPA的方式进行插入已经更新数据)

这是借鉴CQRS的开发理念,将查询和操作分开处理。操作类的业务实现借鉴了DDD战术设计的理念,使用领域类,工厂类更面向对象的实现逻辑。 如果你不太适应这样的开发模式的话。可以在domain模块中按照你之前从Controller->Service->DAO的模式进行开发。it is up to you.

二次开发指南

假设你要新增一个会员member业务,可以在以下三个模块新增对应的包来实现你的业务

agileboot
├── agileboot-admin -- 
│                ├── member -- 会员模块
│
├── agileboot-domain -- 
├                ├── member -- 会员模块(举例)
├                     ├── command -- 命令参数接收模型(命令)
├                     ├── dto -- 返回数据类
├                     ├── db -- DB操作类
├                          ├── entity -- 实体类
├                          ├── service -- DB Service
├                          ├── mapper -- DB Dao
├                     ├── model -- 领域模型类
├                     ├── query -- 查询参数模型(查询)
│                     ├────── MemberApplicationService -- 应用服务(事务层,操作领域模型类完成业务逻辑)
└─

🎅 技术文档 🎅

🌻 注意事项 🌻

🎬 AgileBoot全栈交流群 🎬

QQ群: 加入QQ群 点击按钮入群。

如果觉得该项目对您有帮助,可以小额捐赠支持本项目演示网站服务器等费用~

logo

💕 特别鸣谢

💒 相关框架