1. 若依框架简介与IDEA环境准备若依RuoYi是一个基于Spring Boot的Java EE企业级快速开发平台它整合了Apache Shiro、MyBatis、Thymeleaf等主流技术栈。我第一次接触这个框架是在2018年当时就被它完善的后台管理功能所吸引。经过多年迭代现在的若依已经发展成包含单体架构、前后端分离、微服务等多种版本的全能型开发框架。为什么选择若依我总结了几点实战体会内置20常用功能模块包括用户权限、数据字典、定时任务等代码生成器能自动生成前后端基础代码节省50%以上的开发时间完善的权限控制体系支持按钮级和数据级权限响应式布局完美适配PC/平板/手机在IDEA中部署前需要准备硬件环境建议8G以上内存实测6G内存运行全套服务较吃力软件环境JDK 1.8推荐JDK17MySQL 5.7重要数据记得提前备份Maven 3.6IntelliJ IDEA 2021.3社区版即可提示若依对Redis有强依赖建议提前安装Redis 5.0版本。我在Windows下使用Redis-x64-3.2.100.msi安装包时遇到过兼容性问题换成5.0.14版本后解决。2. 项目导入与基础配置2.1 源码获取与导入从Gitee克隆最新代码国内镜像速度更快git clone https://gitee.com/y_project/RuoYi.git在IDEA中导入时有个小技巧不要直接Open而是选择File - New - Project from Existing Sources然后选择pom.xml文件。这样能确保Maven依赖正确加载。我遇到过直接Open导致依赖解析不全的情况重新导入后解决。导入成功后建议立即执行以下操作右键项目 - Maven - Reimport检查JDK版本File - Project Structure设置Maven本地仓库避免重复下载依赖2.2 数据库配置若依需要两个核心数据库表创建名为ry的数据库执行sql目录下的quartz.sql和ry_2021xxxx.sql具体文件名看版本常见踩坑点MySQL 8.0需要修改驱动为com.mysql.cj.jdbc.Driver时区问题建议在连接串添加?serverTimezoneAsia/Shanghai字符集推荐使用utf8mb4支持emoji表情存储示例配置application.ymldatasource: url: jdbc:mysql://localhost:3306/ry?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root password: 1234563. 核心模块深度解析3.1 权限控制系统若依的权限体系是我见过最完善的之一其核心实现位于ruoyi-framework模块Shiro配置类ShiroConfig.java中定义了密码加密方式默认MD5盐值拦截器链anon/authc/roles/perms等Session管理策略权限校验流程用户登录时LoginService调用ShiroRealm进行认证前端请求携带Authorization头JWT模式后端通过RequiresPermissions注解校验权限实际项目中我经常扩展的功能增加数据权限过滤基于部门/角色集成OAuth2.0第三方登录添加登录失败锁定机制3.2 代码生成器原理这个功能简直是我的生产力倍增器其核心代码在GenController和VelocityInitializer生成步骤读取数据库元数据获取表结构使用Velocity模板引擎渲染输出到指定目录可自定义模板文件路径resources/vm/java/domain.java.vm resources/vm/xml/mapper.xml.vm我通常会做这些优化修改模板增加Swagger注解自动生成前端API文件添加数据校验注解如NotBlank4. 高级配置与调优4.1 多环境部署建议配置不同环境的profilespring: profiles: active: dev # 可切换为test/prod对应的配置文件application-dev.yml开发环境application-prod.yml生产环境4.2 性能优化建议根据我的压测经验JMeter测试Redis缓存开启二级缓存后QPS提升3倍Cacheable(value userCache, key #userId) public User getUserById(Long userId)线程池优化修改ThreadPoolConfig参数task.pool.core-size20 task.pool.max-size100SQL监控开启Druid监控druid: stat-view-servlet: enabled: true login-username: admin login-password: 1234564.3 常见问题解决方案问题1启动时报Table ry.QRTZ_LOCKS doesnt exist原因quartz表未初始化解决执行sql目录下的quartz.sql问题2前端页面样式错乱检查Nginx配置是否正确代理静态资源清理浏览器缓存特别是Thymeleaf模板问题3代码生成器报Velocity异常确认resources/vm目录存在检查文件权限Linux环境下常见5. 二次开发实战建议经过多个项目的实践我总结出这些开发规范分包策略com.xxx ├── common # 公共模块 ├── system # 系统核心 └── business # 业务模块日志规范// 使用Lombok简化 Slf4j public class XxxService { public void demo() { log.debug(调试信息); log.info(业务日志); } }API设计原则统一返回Result对象错误码规范参考HttpStatus接口版本控制/api/v1/xxx对于需要扩展的功能模块建议采用插件化开发模式。比如要添加支付功能新建ruoyi-modules-pay模块实现PayService接口通过SPI机制自动注册最后分享一个实用技巧在IDEA中打开Services窗口View - Tool Windows - Services可以同时监控多个Spring Boot应用的运行状态特别适合微服务调试。