AgileBoot是一套开源的全栈精简快速开发平台,毫无保留给个人及企业免费使用。本项目的目标是做一款精简可靠,代码风格优良,项目规范的小型开发脚手架。 适合个人开发者的小型项目或者公司内部项目使用。也可作为供初学者学习使用的案例。
- 本仓库是 Agileboot 快速开发脚手架的配套后端项目。后端是基于优秀的开源项目AgileBoot-Back-End开发而成。在此感谢 AgileBoot-Back-End 的作者。
- 前端采用Vue3、Element Plus、TypeScript、Pinia。对应前端仓库 AgileBoot-Front-End ,保持同步更新。
- 后端采用Spring Boot、Spring Security & Jwt、Redis & Postgresql、Mybatis Plus等。
- 权限认证使用Jwt,支持多终端认证系统。
- 支持注解式主从数据库切换,注解式请求限流,注解式重复请求拦截。
- 支持注解式菜单权限拦截,注解式数据权限拦截。
- 支持加载动态权限菜单,实时权限控制。
- 有大量的单元测试,集成测试覆盖确保业务逻辑正确。
有任何问题或者建议,可以在 Issues 中提给作者。
您的Issue比Star更重要
如果觉得项目对您有帮助,可以来个Star ⭐
演示地址: https://agileboot-front-end.pages.dev
- JDK
- Mysql
- Redis
- Node.js
| 技术 | 说明 | 版本 |
|---|---|---|
springboot |
Java项目必备框架 | 2.7 |
druid |
alibaba数据库连接池 | 1.2.8 |
springdoc |
文档生成 | 3.0.0 |
mybatis-plus |
数据库框架 | 3.5.2 |
hutool |
国产工具包(简单易用) | 5.8.40 |
mockito |
单元测试模拟 | 4.11.0 |
guava |
谷歌工具包(提供简易缓存实现) | 31.0.1-jre |
junit.jupiter |
单元测试 | 5.9.2 |
h2 |
内存数据库 | 1.10.19 |
jackson |
比较安全的Json框架 | follow springboot |
knife4j |
接口文档框架 | 3.0.3 |
Spring Task |
定时任务框架(适合小型项目) | follow springboot |
git clone https://github.com/bruceblink/AgileBoot-Back-End
git clone https://github.com/bruceblink/AgileBoot-Front-End
已经支持docker一键启动mysql和redis的docker实例,无需本机下载安装。使用方式:
-
安装docker desktop(可选)
-
在linux服务器或者直接运行docker/run.md(如果已经安装了docker desktop)中的如下命令:
cd docker docker-compose -f docker-compose.yml -p agile-boot up -d运行无报错则成功则说明mysql和redis的服务启动成功,无需再重新导入执行sql脚本初始化数据库
-
关于MySQL的配置见my.cnf
-
在docker-compose.yml中配置了
docker-entrypoint-initdb.d使用sql/mysql8/*.sql中的sql脚本进行数据库的初始化,初始化执行脚本的顺序按照脚本"名称的标号顺序"执行,原理见docker-entrypoint-initdb.d初始化脚本的执行顺序,后续开发过程中只需要维护sql/mysql8目录下的sql脚本即可 -
关于redis的配置见redis.conf
(如果使用docker-compose搭建的开发环境,则下面的1、2两个步骤可以省略,直接从3开始)
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直接启动
1. 找到agilboot-admin模块下的resource文件中的application.yml文件
2. 配置以下两个值
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
3. 找到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 -- 应用服务(事务层,操作领域模型类完成业务逻辑)
└─
- IDEA会自动将.properties文件的编码设置为ISO-8859-1,请在Settings > Editor > File Encodings > Properties Files > 设置为UTF-8
- 请导入统一的代码格式化模板(Google): Settings > Editor > Code Style > Java > 设置按钮 > import schema > 选择项目根目录下的GoogleStyle.xml文件
- 如需要生成新的表,请使用CodeGenerator类进行生成。
- 填入数据库地址,账号密码,库名。然后填入所需的表名执行代码即可。(大概看一下代码就知道怎么填啦)
- 生成的类在infrastructure模块下的target/classes目录下
- 不同的数据库keywordsHandler方法请填入对应不同数据库handler。(搜索keywordsHandler关键字)
- 项目基础环境搭建,请参考docker目录下的指南搭建。保姆级启动说明:
- 注意:管理后台的后端启动类是AgileBootAdminApplication
- Swagger的API地址为 http://localhost:8080/v3/api-docs