三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

若依框架核心架构与实战应用解析

若依框架核心架构与实战应用解析

1. 若依框架基础入门解析

若依(Ruoyi)作为国内主流的企业级快速开发框架,我在多个生产项目中实际应用后,发现其"约定优于配置"的设计理念能显著降低开发门槛。这个基于Spring Boot的权限管理系统,通过内置代码生成器和模块化设计,让中小型项目的开发效率提升3-5倍成为可能。

2. 核心架构设计解析

2.1 技术栈组成

采用经典的前后端分离架构:

  • 后端:Spring Boot 2.5 + MyBatis Plus 3.5
  • 前端:Vue 2.6 + Element UI 2.15
  • 安全:Shiro 1.7 + JWT 3.11
  • 辅助:Redis 6.2缓存 + Quartz 2.3定时任务

实际项目中建议将Shiro替换为Spring Security,后者在微服务场景下扩展性更优

2.2 模块化设计

框架采用Maven多模块设计:

ruoyi-admin // 后台服务 ruoyi-common // 通用组件 ruoyi-framework // 核心框架 ruoyi-quartz // 定时任务 ruoyi-generator // 代码生成

3. 关键功能实现详解

3.1 权限控制系统

采用RBAC模型实现四级权限控制:

  1. 菜单权限:通过sys_menu表控制
  2. 按钮权限:使用@RequiresPermissions注解
  3. 数据权限:基于部门ID过滤
  4. 接口权限:Shiro过滤器链配置
// 典型权限注解使用 @RequiresPermissions("system:user:edit") public String editUser(User user) { // 业务逻辑 }

3.2 代码生成器实战

通过velocity模板引擎实现:

  1. 配置数据表信息
  2. 选择生成模块(单表/树表)
  3. 自定义模板参数
  4. 一键生成前后端代码

生成规则:

  • 实体类:表名转驼峰
  • Mapper:自动继承BaseMapper
  • Service:包含基础CRUD方法
  • Controller:默认RESTful风格

4. 高频问题解决方案

4.1 分页ID精度丢失

问题现象:Long类型ID返回到前端丢失精度 解决方案:

  1. 配置Jackson序列化
spring: jackson: generator: write_numbers_as_strings: true
  1. 或使用@JsonFormat注解
@JsonFormat(shape = JsonFormat.Shape.STRING) private Long userId;

4.2 二级字典使用

系统默认支持多级字典:

  1. 在sys_dict_type表创建字典类型
  2. sys_dict_data表建立父子关系
  3. 前端通过dict.getChildren()获取

5. 性能优化实践

5.1 缓存策略优化

  1. 菜单缓存:Redis存储权限树
  2. 字典缓存:@Cacheable注解
  3. 配置缓存:启动时预加载

5.2 SQL优化要点

  1. 避免在循环中查询数据库
  2. 使用MyBatis Plus的LambdaQueryWrapper
  3. 复杂查询添加@DataSource注解切换数据源

6. 扩展开发指南

6.1 微服务集成

通过Nacos实现服务发现:

  1. 添加spring-cloud-alibaba依赖
  2. 配置bootstrap.yml注册中心
  3. 使用@FeignClient声明式调用

6.2 定时任务增强

  1. 继承AbstractQuartzJob实现业务逻辑
  2. 通过Cron表达式配置触发规则
  3. 动态任务通过SchedulerFactoryBean管理

我在电商后台系统中实践发现,合理使用若依的代码生成器,配合自定义模板,可使标准CRUD接口开发时间从8小时缩短至30分钟。但需要注意,对于复杂业务逻辑,建议手动编写Service层代码以保证可维护性。

← 返回列表