当前位置: 首页 > news >正文

ruoyi前后端分离版本

https://gitee.com/y_project/RuoYi-Vue

RuoYi-Vue(你给的这个 Gitee 项目)不是微服务架构,是「模块化单体架构」;它分多个模块,是为了代码解耦、复用、分层维护,不是拆成独立微服务

下面从架构本质、模块划分、和微服务的区别三方面讲透,你一看就懂。


一、先分清:RuoYi-Vue 不是微服务,是模块化单体

1. 微服务的核心特征(RuoYi-Vue 都没有)

  • 每个服务独立进程、独立端口、独立部署、独立数据库
  • 有注册中心(Nacos)、网关(Gateway)、服务间远程调用(Feign)、分布式事务等组件
  • 模块之间是网络通信,不是本地方法调用

2. RuoYi-Vue 后端的真实架构

  • 基于Spring Boot 单体应用只有一个启动类(RuoYiApplication)、一个端口、打包成一个 jar/war
  • 所有模块最终合并到同一个 JVM 进程里运行,模块间是本地依赖、直接方法调用,没有远程通信
  • 没有 Spring Cloud、Nacos、Gateway 这些微服务组件(那是 RuoYi-Cloud 才有的)

一句话:RuoYi-Vue = 前后端分离 + 模块化单体;RuoYi-Cloud = 微服务版


二、后端为什么要分成这么多模块?(核心原因)

你看到的目录大概是这样:

ruoyi/ ├── ruoyi-admin # 入口模块(启动类、Controller、前端接口) ├── ruoyi-system # 系统核心业务(用户、角色、菜单、部门) ├── ruoyi-gen # 代码生成器 ├── ruoyi-quartz # 定时任务 ├── ruoyi-file # 文件上传 ├── ruoyi-common # 公共工具(工具类、常量、异常、Redis、日志) ├── ruoyi-framework # 框架核心(权限、拦截器、配置、数据源)

1. 解耦:高内聚、低耦合(最核心)

  • 每个模块只做一件事:ruoyi-system管用户权限、ruoyi-quartz只管定时任务、ruoyi-common只放通用工具
  • 模块之间通过Maven 依赖引用,不互相嵌套、不写重复代码
  • 改定时任务,只动ruoyi-quartz,不影响系统核心,降低风险

2. 复用:公共能力抽离,避免重复

  • ruoyi-common里的工具类、Redis、日志、异常处理,所有业务模块都能直接依赖,不用每个模块写一遍
  • 框架能力(权限、拦截器)放ruoyi-framework,业务模块只关注业务逻辑

3. 分层清晰、便于维护与协作

  • 入口(admin)→ 业务(system/gen/quartz)→ 框架(framework)→ 公共(common),层次一目了然
  • 多人开发时,每人负责一个模块,减少代码冲突、方便分工

4. 可插拔、灵活扩展

  • 不需要定时任务,直接去掉ruoyi-quartz依赖,不影响主流程
  • 新增业务模块,只加一个 Maven 模块,不侵入原有代码

三、模块化单体 vs 微服务:关键区别(一眼看懂)

表格

对比项RuoYi-Vue(模块化单体)微服务(RuoYi-Cloud)
运行方式一个 JVM 进程、一个端口、一个 jar多个独立进程、多端口、独立部署
模块通信本地方法调用、Maven 依赖HTTP/Feign 远程调用、注册中心发现
部署整体打包、整体重启单独部署、单独扩容、不影响其他
技术栈Spring Boot、无 Cloud 组件Spring Cloud Alibaba、Nacos、Gateway、Feign
数据库共用一个数据库服务独立数据库、分布式事务

四、一句话总结

RuoYi-Vue 分模块,是「代码层面的模块化拆分」,为了解耦、复用、好维护;不是「运行层面的微服务拆分」—— 它最终还是一个单体应用,所有模块跑在同一个进程里

我给你画成层级结构图 + 依赖箭头,一眼看懂谁依赖谁、谁是入口、谁是公共包。

一、整体层级(从上到下)

ruoyi-admin(最顶层·启动入口) ↓ 依赖 ruoyi-system、ruoyi-quartz、ruoyi-gen、ruoyi-file ↓ 依赖 ruoyi-framework(框架核心) ↓ 依赖 ruoyi-common(最底层·公共工具)

二、逐模块说明 + 依赖关系

1. ruoyi-common(底层公共包)

所有人都依赖它,但它不依赖任何人

  • 工具类、常量、枚举
  • Redis、线程池、加密工具
  • 统一返回结果、异常类
common ← 所有模块

2. ruoyi-framework(框架层)

framework → common

提供:

  • 权限控制(Shiro/Security)
  • 数据源、拦截器、过滤器
  • 全局配置、AOP、日志切面
  • 统一异常处理

它是业务模块的底座


3. 业务模块(中间层)

包括:

  • ruoyi-system(用户、角色、菜单、部门)
  • ruoyi-quartz(定时任务)
  • ruoyi-gen(代码生成器)
  • ruoyi-file(文件上传)
system → framework quartz → framework gen → framework file → framework

4. ruoyi-admin(顶层入口)

唯一有启动类的模块,项目真正运行的入口依赖所有业务模块:

admin → system admin → quartz admin → gen admin → file admin → framework admin → common
  • 放 Controller
  • 放前端接口
  • 配置文件 application.yml
  • 启动类 RuoYiApplication

三、完整依赖总图(最直观)

┌─────────────┐ │ ruoyi-admin │ 启动、Controller、接口 └──────┬──────┘ │ ┌───────────────┼───────────────┬───────────────┐ ▼ ▼ ▼ ▼ ┌────────────────┐ ┌──────────────┐ ┌─────────┐ ┌───────────────┐ │ ruoyi-system │ │ ruoyi-quartz │ │ ruoyi-gen │ │ ruoyi-file │ 业务模块 └────────┬───────┘ └───────┬──────┘ └────┬────┘ └───────┬───────┘ │ │ │ │ └─────────────────┼─────────────┼──────────────┘ ▼ ┌───────────────────┐ │ ruoyi-framework │ 权限、拦截、配置、核心 └─────────┬─────────┘ ▼ ┌───────────────────┐ │ ruoyi-common │ 工具、通用、公共类 └───────────────────┘

四、一句话记住结构

  • common 最底层,谁都能用
  • framework 封装框架能力,给业务用
  • system/quartz/gen/file 是业务模块
  • admin 是总入口,把所有业务拼起来运行

整个项目最终只启动一个服务,不是微服务。

http://www.jsqmd.com/news/620257/

相关文章:

  • ESP8266智能配网实践:从SmartConfig到密码持久化存储
  • Cadence 17.2 实战指南:从零开始创建电阻、电容与LED的原理图Symbol库
  • 5个实战项目带你玩转知识追踪数据集(附ASSISTments2015完整分析代码)
  • RAG从入门到精通:如何解决检索语义不匹配(附携程面经),看这篇就够了!
  • 密码学的数学基础3-浮点数在计算机中的的实现
  • OpenClaw监控面板:可视化SecGPT-14B安全任务执行状态
  • ONNX模型可视化指南:用Netron+C#实现模型结构解析与输入输出验证
  • 《OpenClaw (Docker手工部署版) 终极避坑与实战指南》橙
  • 阿里:利用更新方向提升大模型推理
  • 线上一按“导出”全站卡死!排查发现竟是“全局线程池”惹的祸...
  • ISSACSIM简单物体操作
  • OpenClaw自动化办公:用Phi-3-mini-128k-instruct实现周报生成与邮件发送
  • 从零到过等保:一个运维的实战踩坑记录(含拓扑图绘制工具与设备配置模板)
  • 告别玄学调试:用Vivado硬件管理器搞定Xilinx FPGA DDR4 MIG的读写时序与眼图分析
  • 大卫小东(Sheldon)恫
  • 镜像视界:以AI镜像孪生,引领视频孪生从“看见”到“可决策”的产业跃迁
  • Snack Json 流式解析与自动结构修复深度指南莆
  • AI 行为控制体系设计(OpenClaw 实战)
  • 手把手教你用AutoDL的V100-32GB实例,零成本体验Llama2-13B中文对话模型
  • 【研报298】新能源汽车需求跟踪报告:3月车企销量与海外市场表现
  • Qt项目实战:如何用pdfium动态库实现PDF高清渲染(附完整代码)
  • 燃料电池热管理控制,接受定制,单循环,双循环定制,效率
  • 八位行波进位加法器设计与Quartus II实现(附详细电路图)
  • 如何快速掌握SWE-bench:面向开发者的完整AI代码修复测试指南
  • VCS仿真Debug实战:巧用UCLI的stop -continue命令抓取信号跳变
  • SteamCleaner游戏空间清理完整指南:快速释放硬盘空间的终极解决方案
  • UE4 C++动态加载与实例化蓝图类的两种高效方法
  • Petalinux 2020.1 QSPI启动踩坑实录:手把手教你解决‘Bad data crc’和分区超限问题
  • Adafruit HMC5883L统一驱动库:SI单位直出与硬件抽象实践
  • GLM-OCR实战案例:教育行业试卷OCR+答案结构化提取完整方案