一、环境准备与基础配置
1.1 开发环境标准化配置
建议采用JDK 11+Maven 3.6+MySQL 8.0的组合,通过Docker快速部署Redis和Nginx。在IDEA中配置Spring Boot插件时,需注意版本兼容性,推荐使用2.7.x系列与框架保持同步。
<!-- 典型pom.xml依赖配置示例 --><properties><ruoyi.version>3.8.5</ruoyi.version><spring-boot.version>2.7.18</spring-boot.version></properties><dependencies><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId><version>${ruoyi.version}</version></dependency></dependencies>
1.2 数据库初始化要点
执行db/ruoyi-vue-pro.sql时需注意:
- 修改
application-druid.yml中的连接参数 - 初始化管理员账号(默认admin/admin123)
- 建议启用慢查询日志(slow_query_log=1)
二、核心模块深度解析
2.1 权限控制体系
系统采用RBAC+数据权限的复合模型:
- 菜单权限:通过
sys_menu表实现动态路由 - 按钮权限:基于注解
@PreAuthorize的细粒度控制 - 数据权限:实现
DataScope接口进行SQL拦截改造
典型数据权限实现示例:
public class DeptDataScope implements DataScope {@Overridepublic String getSqlSegment(String alias) {LoginUser user = SecurityUtils.getLoginUser();if (user.isAdmin()) {return "";}return " AND " + alias + ".dept_id IN (SELECT dept_id FROM sys_dept WHERE find_in_set(dept_id, getDeptList('" + user.getDeptId() + "')))";}}
2.2 代码生成器进阶使用
自定义模板开发步骤:
- 修改
resources/vm目录下的模板文件 - 配置
gen.config中的表前缀过滤规则 - 通过
GenTableService扩展字段类型映射
关键配置参数说明:
gen:author: dev_teammoduleName: systemtablePrefix: sys_,gen_apiPath: /api/system
三、二次开发实战技巧
3.1 模块化扩展策略
推荐采用三层扩展架构:
src/main/java├── com.ruoyi│ ├── framework # 基础框架扩展│ ├── project # 业务模块开发│ │ └── custom # 自定义模块│ │ ├── controller│ │ ├── service│ │ └── domain
3.2 接口安全加固方案
- JWT令牌增强:添加设备指纹校验
- 防重放攻击:实现nonce机制
- 敏感数据脱敏:自定义
@Sensitive注解
脱敏处理器实现示例:
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface Sensitive {SensitiveType type() default SensitiveType.CHINESE_NAME;}public class SensitiveHandler implements SerializationFeature {@Overridepublic boolean process(Object obj, String fieldName, Object fieldValue) {if (fieldValue instanceof String) {Sensitive annotation = getAnnotation(obj.getClass(), fieldName);if (annotation != null) {return DesensitizationUtils.desensitize((String) fieldValue, annotation.type());}}return false;}}
四、性能优化最佳实践
4.1 数据库优化方案
- 索引优化:使用
EXPLAIN分析执行计划 - 分页优化:推荐使用
MyBatis-Plus的IPage - 缓存策略:实现两级缓存(Redis+Caffeine)
典型缓存实现:
@Cacheable(value = "userCache", key = "#id", unless = "#result == null")public UserInfo getUserById(Long id) {return userMapper.selectUserById(id);}
4.2 前端性能调优
- 路由懒加载:配置
vue.config.js的pages选项 - 按需引入:使用
unplugin-vue-components - 请求合并:实现
Axios拦截器批量处理
批量请求示例:
const batchRequest = async (requests) => {const results = [];for (const req of requests) {results.push(await axios(req));}return results;};
五、常见问题解决方案
5.1 跨域问题处理
在application.yml中配置:
security:cors:allowed-origins: "*"allowed-methods: GET,POST,PUT,DELETEallowed-headers: "*"
5.2 定时任务调度
使用@Scheduled注解时需注意:
- 分布式环境下需配合
Quartz集群模式 - 动态任务管理建议通过数据库存储
动态任务实现示例:
@Servicepublic class DynamicTaskService {@Autowiredprivate ScheduledTaskRegistrar taskRegistrar;public void addTask(String cron, Runnable task) {taskRegistrar.addTriggerTask(task,triggerContext -> {CronTrigger trigger = new CronTrigger(cron);return trigger.nextExecutionTime(triggerContext);});}}
六、持续集成与部署
6.1 CI/CD流水线设计
推荐采用三阶段部署:
- 代码检查:SonarQube静态分析
- 构建打包:Maven多环境配置
- 灰度发布:Nginx权重路由
Jenkinsfile示例片段:
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package -Pprod'archiveArtifacts artifacts: 'target/*.jar', fingerprint: true}}stage('Deploy') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'prod-server',transfers: [sshTransfer(sourceFiles: 'target/*.jar',removePrefix: 'target/',remoteDirectory: '/opt/app',execCommand: 'systemctl restart ruoyi')])])}}}}
6.2 监控告警体系搭建
- 日志收集:ELK+Filebeat方案
- 指标监控:Prometheus+Grafana
- 告警策略:自定义阈值规则
Prometheus配置示例:
scrape_configs:- job_name: 'ruoyi'metrics_path: '/actuator/prometheus'static_configs:- targets: ['localhost:8080']
通过系统化的学习路径和实战技巧,开发者可在2-4周内掌握框架的核心开发能力。建议采用”核心功能→扩展开发→性能调优”的三阶段学习法,结合实际业务场景进行模块化开发实践。在开发过程中,注意遵循框架的约定优于配置原则,同时保持对Spring生态新特性的持续关注,这将有助于构建更健壮的企业级应用系统。