若依(RuoYi)是国内 Java 领域非常知名的开源快速开发平台,基于 Spring Boot 构建,主打权限管理和代码生成。很多团队用它来搭建后台管理系统,因为它确实能省不少事。不过用久了会发现,它也有自己的脾气和局限。今天咱们就抛开那些宣传话术,从实际工程角度聊聊它的架构、优缺点以及什么时候该选它。
技术架构全景
整体来看,若依走的是经典的企业级分层路线。前端主要依赖 Vue2 配合 Element UI,后端则是 Spring Boot 加上 Spring Security 和 MyBatis。数据层通常搭配 MySQL、Redis 和 Druid 连接池。这种组合胜在稳定,社区资源多,但技术栈相对保守,尤其是前端部分还没完全跟上 Vue3 的步伐。
核心特长分析
先说说它最让人上头的地方。
权限管理体系
这套 RBAC 模型闭环做得挺完整。不管是菜单显示、按钮控制,还是数据范围隔离,都有现成的注解支持。比如在后端接口加个 @PreAuthorize("@ss.hasPermi('system:user:list')"),就能轻松控制访问权限,不用自己写一堆拦截器逻辑。
@RestController
public class SysUserController {
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/list")
public TableDataInfo list(SysUser user) {
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
}
}
模块化设计
虽然是三层架构,但它把数据权限等通用逻辑封装成了注解,像 @DataScope 这种,在 Service 层直接标记就能自动处理部门隔离,省去了大量重复 SQL 拼接的工作。
代码生成器 这是真正的'低代码'杀手锏。配置好表结构,一键生成实体类、Mapper、Service、Controller 甚至前端页面。对于标准 CRUD 业务,效率提升是肉眼可见的。
@RestController
@RequestMapping("/tool/gen")
public class GenController extends BaseController {
@PostMapping("/importTable")
public AjaxResult importTable(String tables) {
String[] tableNames = convertToStrArray(tables);
List<TableInfo> tableList = genService.selectTableListByNames(tableNames);
genService.genCode(tableList);
return AjaxResult.success();
}
}
显著短板与局限性
当然,没有完美的框架,若依用起来也有痛点。
技术栈偏保守 前端还在用 Vue2 的 Options API,没迁移到 Composition API,这对习惯新特性的开发者来说有点劝退。微服务版本虽然存在,但对云原生的支持还不够深入。


