You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
RuoYi-Vue 架构概览
项目版本 : 3.8.0 | 分析日期 : 2026-06-28
前端 : Vue 2.6.12 + Element UI 2.15.6 | 后端 : Spring Boot 2.5.8 + JDK 1.8
1. 系统总体架构
1.1 系统架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ 浏览器客户端 │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ 前端层 (Vue 2 SPA) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │ │
│ │ │ Views │ │ Layout │ │ Store │ │ Router │ │ Components │ │ │
│ │ │ (40+页) │ │(侧边栏/ │ │ (Vuex 5 │ │(静态+ │ │ (22个组件组)│ │ │
│ │ │ │ │ 标签页) │ │ modules)│ │动态路由) │ │ │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └──────┬──────┘ │ │
│ │ └───────────┴───────────┴───────────┴─────────────┘ │ │
│ │ │ │ │
│ │ ┌────────┴────────┐ │ │
│ │ │ Axios 封装层 │ ← 请求/响应拦截器、错误处理 │ │
│ │ └────────┬────────┘ │ │
│ └───────────────────────────┼───────────────────────────────────────┘ │
└──────────────────────────────┼──────────────────────────────────────────┘
│ HTTP/JSON (Bearer Token)
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ 后端服务层 │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ ruoyi-admin (启动层 & Controller 层 — 28 个 Controller) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ 系统管理(13) │ │ 监控管理(5) │ │ 业务模块(6) │ │ 工具/公共(4) │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ │ │
│ │ └───────────────┴───────────────┴───────────────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────────┴──────────────────────────────┐ │ │
│ │ │ ruoyi-framework (框架核心层) │ │ │
│ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │ │
│ │ │ │ Security │ │ AOP 切面 │ │ Config │ │ Redis/JWT │ │ │ │
│ │ │ │ (认证/ │ │ (4个切面) │ │ (12个配置)│ │ (Token管理)│ │ │ │
│ │ │ │ 授权) │ │ │ │ │ │ │ │ │ │
│ │ │ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │ │ │
│ │ └─────────────────────────┬──────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌──────────────┬───────┴───────┬──────────────┐ │ │
│ │ ▼ ▼ ▼ ▼ │ │
│ │ ┌──────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │ │
│ │ │ruoyi │ │ book- │ │ stock- │ │ ruoyi- │ │ │
│ │ │system│ │ system │ │ system │ │ quartz │ │ │
│ │ │(12S │ │ (6S/6M) │ │ (9M) │ │ /generator │ │ │
│ │ │ 12M) │ │ │ │ │ │ │ │ │
│ │ └──────┘ └──────────┘ └──────────┘ └────────────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────────┴──────────────────────────────┐ │ │
│ │ │ ruoyi-common (通用工具层) │ │ │
│ │ │ BaseController / AjaxResult / BaseEntity / 注解 / │ │ │
│ │ │ 工具类(20+) / 异常类 / 过滤器 / 常量 / 分页组件 │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ MySQL 数据库 │ │ Redis 缓存 │ │
│ │ ┌────────────────┐ │ │ ┌──────────────────────┐ │ │
│ │ │ sys_* 系统表 │ │ │ │ login_tokens:{uuid} │ │ │
│ │ │ book_* 账本表 │ │ │ │ 用户会话 / Token │ │ │
│ │ │ stock_* 股票表 │ │ │ ├──────────────────────┤ │ │
│ │ │ quartz_* 任务表 │ │ │ │ 限流计数器 │ │ │
│ │ │ gen_* 生成器表 │ │ │ ├──────────────────────┤ │ │
│ │ └────────────────┘ │ │ │ 配置缓存 / 字典缓存 │ │ │
│ └──────────────────────┘ │ └──────────────────────┘ │ │
│ └────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
1.2 分层说明
层级
职责
关键技术
前端展示层
页面渲染、用户交互、路由导航、状态管理
Vue 2 SPA、Element UI、Vuex、Vue Router
API 通信层
前后端 HTTP 通信、Token 携带、错误统一处理
Axios + 拦截器、JWT Bearer Token
Controller 层
请求接收、参数校验、权限注解、响应封装
Spring MVC、@PreAuthorize、@Log
框架核心层
安全认证、AOP 切面、数据源路由、全局配置
Spring Security、JWT、AspectJ、Druid
Service 层
业务逻辑、事务管理、数据权限过滤
@Transactional、@DataScope
Mapper 层
SQL 映射、动态查询、结果集映射
MyBatis + XML + PageHelper
Domain 层
实体模型、基类继承、VO/DTO 传输
BaseEntity、TreeEntity
数据存储层
持久化存储、会话缓存、限流计数
MySQL 5.7+、Redis
2. 技术栈总结
2.1 前端技术栈
分类
技术
版本
用途
核心框架
Vue.js
2.6.12
渐进式 MVVM 框架
UI 组件库
Element UI
2.15.6
桌面端组件库
路由管理
Vue Router
3.4.9
SPA 路由(含动态路由)
状态管理
Vuex
3.6.0
集中式状态管理( 5 个模块)
HTTP 客户端
Axios
0.24.0
HTTP 请求封装
构建工具
Vue CLI
4.4.6
项目脚手架
CSS 预处理
Sass
1.32.13
样式预处理器
图表库
ECharts
4.9.0
数据可视化
富文本编辑器
Quill
1.3.7
富文本编辑
代码高亮
highlight.js
9.18.5
代码语法高亮
拖拽排序
vuedraggable
2.24.3
列表拖拽
SVG 图标
svg-sprite-loader
5.1.1
SVG 雪碧图
加密
jsencrypt
3.2.1
RSA 密码加密
进度条
NProgress
0.2.0
页面加载进度
Cookie
js-cookie
3.0.1
Cookie 读写
2.2 后端技术栈
分类
技术
版本
用途
核心框架
Spring Boot
2.5.8
快速开发框架
JDK
Java
1.8
运行环境
安全框架
Spring Security
内置
认证与授权
JWT
jjwt
0.9.1
Token 签发与验证
ORM
MyBatis
2.2.0 (starter)
SQL 映射框架
分页插件
PageHelper
1.4.0
物理分页
连接池
Druid
1.2.8
数据库连接池 + 监控
缓存
Spring Data Redis
内置
会话缓存、限流
API 文档
Springfox Swagger 3
3.0.0
接口文档
JSON 解析
FastJSON
1.2.79
JSON 序列化
Excel 处理
Apache POI
4.1.2
Excel 导入导出
验证码
Kaptcha
2.3.2
图形验证码
代码生成
Velocity
2.3
模板引擎
系统监控
Oshi
5.8.6
服务器信息采集
定时任务
Quartz
内置
任务调度
2.3 数据库技术栈
技术
用途
说明
MySQL 5.7+
主数据库
系统表(sys_)、业务表(book_ /stock_)、任务表(quartz_ )
Redis
缓存/会话
Token 存储(login_tokens:{uuid})、限流计数器、配置缓存
3. 模块划分
3.1 模块清单
模块名
类型
职责
核心内容
ruoyi-admin
启动模块
Spring Boot 启动入口, Controller 层聚合
启动类、28 个 Controller、Swagger 配置、打包部署
ruoyi-framework
框架核心
安全认证、AOP 切面、数据源、全局配置
Security、JWT、4 个切面、12 个配置类、异步管理
ruoyi-system
系统管理
系统基础业务
用户/角色/菜单/部门/字典/岗位/日志 (12 Service + 12 Mapper)
ruoyi-common
通用工具
基类、工具类、注解、异常、常量
BaseController、AjaxResult、BaseEntity、20+ 工具类
ruoyi-generator
代码生成
Velocity 模板驱动的代码生成器
表结构查询、模板渲染、2 个 Mapper
ruoyi-quartz
定时任务
基于 Quartz 的任务调度管理
任务 CRUD、执行日志、2 个 Mapper
book-system
账本业务
账务管理业务模块
账户/账本/操作记录/统计 (6 Service + 6 Mapper)
stock-system
股票业务
股票分析业务模块
股票信息/行情/财务/趋势 (9 Mapper)
3.2 模块依赖图
┌─────────────┐
│ ruoyi-admin │ ← 启动入口,打包部署
└──────┬──────┘
│ depends on
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌─────────────┐
│ ruoyi- │ │ ruoyi- │ │ ruoyi- │
│ system │ │ quartz │ │ generator │
└──────┬─────┘ └──────┬─────┘ └──────┬──────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────┐
│ ruoyi-framework │
│ (Security, AOP, DataSource, Redis, Config)│
└──────────────────────┬──────────────────────┘
│ depends on
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌─────────────┐
│ book- │ │ stock- │ │ ruoyi- │
│ system │ │ system │ │ common │
└────────────┘ └────────────┘ └─────────────┘
依赖规则 :
ruoyi-admin → 依赖所有业务模块 + framework
业务模块 (ruoyi-system / book-system / stock-system / quartz / generator) → 依赖 ruoyi-framework
ruoyi-framework → 依赖 ruoyi-common
ruoyi-common → 无内部依赖(底层基础模块)
4. 关键设计模式
4.1 MVC 模式
Controller (ruoyi-admin)
│ 接收请求、参数校验、权限控制
▼
Service (各业务模块)
│ 业务逻辑、事务管理
▼
Mapper (各业务模块)
│ SQL 映射、数据访问
▼
Domain (ruoyi-common / 各模块)
实体模型、基类继承
Controller : 统一继承 BaseController,获得 startPage()、getDataTable()、toAjax() 等通用方法
Service : 接口 + 实现分离 (ISysUserService / SysUserServiceImpl)
Mapper : MyBatis XML 映射 + Java 接口,大量使用动态 SQL
Domain : BaseEntity → TreeEntity 继承体系
4.2 分层架构
物理分层 ( Maven 多模块)与 逻辑分层 ( Controller → Service → Mapper) 相结合:
┌───────────────────────────────────────────┐
│ ruoyi-admin → Controller 层 (表现层) │
├───────────────────────────────────────────┤
│ ruoyi-framework → 框架支撑层 (横切关注点) │
├───────────────────────────────────────────┤
│ ruoyi-system → Service/Mapper (业务层) │
│ book-system → Service/Mapper (业务层) │
│ stock-system → Service/Mapper (业务层) │
├───────────────────────────────────────────┤
│ ruoyi-common → Domain/工具类 (基础层) │
└───────────────────────────────────────────┘
4.3 AOP 切面
切面
注解
通知类型
优先级
用途
DataSourceAspect
@DataSource
@Around
@Order(1)
多数据源动态切换
DataScopeAspect
@DataScope
@Before
—
数据权限 SQL 注入
LogAspect
@Log
@AfterReturning / @AfterThrowing
—
操作日志异步记录
RateLimiterAspect
@RateLimiter
@Before
—
Redis 限流控制
4.4 其他设计模式
模式
应用场景
实现方式
单例模式
Spring Bean 默认作用域
配置类 (SecurityConfig、DruidConfig 等) 通过 @Configuration + @Bean 实现
工厂模式
异步任务创建
AsyncFactory 创建不同类型的异步任务(操作日志、登录日志)
策略模式
数据权限过滤
@DataScope 注解根据不同数据范围类型(全部/本部门/本人等)生成不同的 SQL 过滤策略
模板方法模式
BaseController
基类定义通用流程(分页、响应),子类 Controller 继承复用
责任链模式
Spring Security 过滤器链
CorsFilter → JwtAuthenticationTokenFilter → AuthenticationFilter 依次处理
代理模式
MyBatis Mapper
MyBatis 通过动态代理生成 Mapper 接口实现
观察者模式
Spring 事件机制
AsyncManager 通过线程池异步处理任务,解耦日志写入与主流程
文档结束