第一次接触若依框架时,我被它"开箱即用"的特性惊艳到了。这个基于SpringBoot+Vue的前后端分离框架,简直就是中小型企业项目的快速启动神器。不过在实际操作中,我发现环境配置环节有几个容易踩的坑,这里分享下我的实战经验。
后端环境需要准备JDK1.8(注意不要用更高版本,会有兼容性问题)、MySQL5.7+、Redis5+和Maven3.6+。前端则需要Node.js 14+版本。特别提醒:Redis安装后一定要设置密码,我在测试环境就遇到过因为没设密码被挖矿程序入侵的情况。
下载源码时建议直接从官网(http://www.ruoyi.vip/)获取最新稳定版。有个小技巧:用Git克隆比下载zip包更稳妥,因为后期更新可以直接pull。我遇到过zip包解压后.gitignore文件丢失的情况,导致IDE生成了大量缓存文件。
拿到标准框架后,第一件事就是"去若依化"改造。这个环节看似简单,实则暗藏玄机。我建议按照这个顺序操作:
先分离前后端项目:把ruoyi-ui目录整个移出作为独立前端项目,剩下的作为后端项目。记得在移动后立即commit,方便回滚。
修改项目名称时,别直接在IDE里重命名。正确做法是先修改pom.xml中的
替换"ruoyi"关键字时要注意:
有个容易遗漏的点是前端vue.config.js里的代理配置,这里的target要改成你后端的新服务名。我曾在联调阶段被这个坑耽误了两小时。
配置数据库时,建议新建专属用户而不是直接用root。在application-druid.yml中:
yaml复制datasource:
url: jdbc:mysql://localhost:3306/your_db?useSSL=false
username: your_user
password: your_pwd
initialSize: 5
maxActive: 20
连接池参数要根据服务器配置调整,4核8G的机器我一般设maxActive=50。记得在MySQL中执行ry_2023xxxx.sql初始化脚本前,先创建好数据库。
Redis配置在application.yml中,生产环境一定要配密码:
yaml复制redis:
host: 127.0.0.1
port: 6379
password: your_redis_pwd
timeout: 3000
如果启用哨兵模式,配置方式略有不同,需要指定sentinel节点和master名称。
后端启动很简单,直接运行RuoYiApplication即可。但有个细节:建议先执行mvn clean install把依赖装好。我遇到过同事本地仓库不完整导致类找不到的情况。
前端启动前确保node_modules完整:
bash复制# 建议先清理缓存
npm cache clean --force
# 然后安装依赖
npm install --registry=https://registry.npm.taobao.org
# 最后启动
npm run dev
如果启动时报错,试试删除node_modules重新安装。我在Windows和Mac上都遇到过依赖冲突的问题。
启动成功后,访问http://localhost:80应该能看到登录页。这里有个优化点:可以在vue.config.js里修改devServer的port,避免与常见服务端口冲突。
若依默认使用MyBatis,但在复杂业务场景下,MyBatis-Plus的Lambda查询能大幅提升效率。集成步骤:
xml复制<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
java复制// 原版
SqlSessionFactory sessionFactory = sqlSessionFactoryBean.getObject();
// 改为
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
yaml复制mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
type-aliases-package: com.yourpackage.**.domain
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
集成后最大的优势是可以混用MP和原生MyBatis。比如复杂SQL仍用XML写,简单CRUD用MP的Wrapper。我在用户管理模块就采用这种混合模式,开发效率提升40%以上。
在真实企业环境中,还需要考虑以下改造:
建议新建一个base模块存放这些公共组件。我现在的项目结构是这样的:
code复制your-project
├── your-admin # 后台服务
├── your-common # 通用组件
├── your-generator # 代码生成
└── your-ui # 前端项目
在实际部署中,这几个问题出现频率最高:
遇到奇怪的问题时,先看后端日志(默认在logs/下),再看浏览器控制台报错,最后检查网络请求。这个方法帮我解决了90%的部署问题。