RuoYi-Cloud-Plus使用案例:功能演示
概述
RuoYi-Cloud-Plus是基于Spring Cloud Alibaba的微服务通用权限管理系统,提供了丰富的功能模块和强大的技术栈支持。本文将通过实际使用案例,详细演示该框架的核心功能和最佳实践。
技术架构概览
核心功能演示
1. 权限控制与数据操作
示例:基础CRUD操作
@RestController
@RequestMapping("/demo")
public class TestDemoController extends BaseController {
// 查询列表(需要权限验证)
@SaCheckPermission("demo:demo:list")
@GetMapping("/list")
public TableDataInfo<TestDemoVo> list(TestDemoBo bo, PageQuery pageQuery) {
return iTestDemoService.queryPageList(bo, pageQuery);
}
// 新增数据(防重复提交)
@SaCheckPermission("demo:demo:add")
@Log(title = "测试单表", businessType = BusinessType.INSERT)
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS)
@PostMapping()
public R<Void> add(@RequestBody TestDemoBo bo) {
ValidatorUtils.validate(bo, AddGroup.class);
return toAjax(iTestDemoService.insertByBo(bo));
}
}
权限注解说明
| 注解 | 功能说明 | 示例 |
|---|---|---|
@SaCheckPermission | 权限校验 | @SaCheckPermission("demo:demo:list") |
@Log | 操作日志记录 | @Log(title = "测试单表", businessType = BusinessType.INSERT) |
@RepeatSubmit | 防重复提交 | @RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS) |
2. Redis缓存集成
缓存注解使用示例
@RestController
@RequestMapping("/cache")
public class RedisCacheController {
// 查询缓存(60秒过期,最大空闲10分钟)
@Cacheable(cacheNames = "demo:cache#60s#10m#20#1", key = "#key")
@GetMapping("/test1")
public R<String> test1(String key, String value) {
return R.ok("操作成功", value);
}
// 更新缓存
@CachePut(cacheNames = CacheNames.DEMO_CACHE, key = "#key")
@GetMapping("/test2")
public R<String> test2(String key, String value) {
return R.ok("操作成功", value);
}
// 删除缓存
@CacheEvict(cacheNames = CacheNames.DEMO_CACHE, key = "#key")
@GetMapping("/test3")
public R<String> test3(String key, String value) {
return R.ok("操作成功", value);
}
}
缓存配置说明
spring:
cache:
type: redis
redis:
time-to-live: 60000 # 默认过期时间(毫秒)
key-prefix: 'cache:' # 键前缀
use-key-prefix: true # 是否使用前缀
cache-null-values: true # 是否缓存空值
3. Excel导入导出功能
复杂Excel导出示例
@GetMapping("/exportTemplateMultiSheet")
public void exportTemplateMultiSheet(HttpServletResponse response) {
// 准备多sheet数据
List<Map<String, Object>> sheets = new ArrayList<>();
// Sheet1数据
Map<String, Object> sheet1 = new HashMap<>();
sheet1.put("data", getSheet1Data());
sheets.add(sheet1);
// Sheet2数据
Map<String, Object> sheet2 = new HashMap<>();
sheet2.put("data", getSheet2Data());
sheets.add(sheet2);
// 执行导出
ExcelUtil.exportTemplateMultiSheet(sheets, "多sheet报表", "template/multi-sheet.xlsx", response);
}
Excel功能对比表
| 功能特性 | RuoYi-Cloud-Plus | 传统实现 |
|---|---|---|
| 模板导出 | ✅ 支持复杂模板 | ❌ 需要手动编码 |
| 多Sheet | ✅ 原生支持 | ❌ 需要复杂处理 |
| 数据校验 | ✅ 自动校验 | ❌ 手动实现 |
| 性能优化 | ✅ 流式处理 | ❌ 内存占用高 |
4. 消息队列集成
多消息队列支持
RuoYi-Cloud-Plus支持三种主流消息队列:
消息队列配置示例
# RabbitMQ配置
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
# RocketMQ配置
rocketmq:
name-server: localhost:9876
producer:
group: demo-group
# Kafka配置
spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: demo-group
5. 分布式事务管理
Seata分布式事务示例
@GlobalTransactional
public void distributedTransaction() {
// 服务A操作
serviceA.updateData();
// 服务B操作
serviceB.processData();
// 服务C操作
serviceC.finalizeOperation();
}
事务模式对比
| 事务模式 | 适用场景 | 性能影响 | 数据一致性 |
|---|---|---|---|
| AT模式 | 大部分业务场景 | 低 | 最终一致性 |
| TCC模式 | 高一致性要求 | 中 | 强一致性 |
| XA模式 | 传统数据库 | 高 | 强一致性 |
6. 数据安全与脱敏
数据脱敏示例
public class UserVO {
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String phone;
@Sensitive(strategy = SensitiveStrategy.ID_CARD)
private String idCard;
@Sensitive(strategy = SensitiveStrategy.EMAIL)
private String email;
}
// 自动脱敏输出
// 原始: 13800138000 → 输出: 138****8000
// 原始: 110101199001011234 → 输出: 110101********1234
数据加密存储
public class SecureEntity {
@Encrypt(type = EncryptType.AES)
private String sensitiveData;
@Encrypt(type = EncryptType.SM4)
private String businessData;
}
7. 国际化支持
多语言配置示例
@RestController
@RequestMapping("/i18n")
public class TestI18nController {
@GetMapping("/message")
public R<String> getMessage(@RequestHeader("Accept-Language") String language) {
// 自动根据请求头返回对应语言消息
String message = MessageUtils.message("user.welcome");
return R.ok(message);
}
}
语言资源文件结构
resources/
├── i18n/
│ ├── messages.properties # 默认语言
│ ├── messages_zh_CN.properties # 中文
│ ├── messages_en_US.properties # 英文
│ └── messages_ja_JP.properties # 日文
性能优化实践
数据库查询优化
// 使用Mybatis-Plus的Lambda查询
public TableDataInfo<UserVO> queryPage(UserQuery query, PageQuery pageQuery) {
return PageUtils.buildDataInfo(
baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(User.class)
.like(StringUtils.isNotBlank(query.getName()), User::getName, query.getName())
.eq(query.getStatus() != null, User::getStatus, query.getStatus())
.orderByDesc(User::getCreateTime)
)
);
}
缓存策略优化
| 缓存场景 | 策略 | 过期时间 | 说明 |
|---|---|---|---|
| 用户信息 | 读写缓存 | 30分钟 | 高频访问数据 |
| 配置信息 | 只读缓存 | 24小时 | 低频变更数据 |
| 会话数据 | 临时缓存 | 2小时 | 临时性数据 |
| 热点数据 | 本地缓存 | 5分钟 | 极高频率数据 |
监控与运维
健康检查端点
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
health:
show-details: always
监控指标采集
| 监控类型 | 工具 | 监控指标 |
|---|---|---|
| JVM监控 | Micrometer | 内存使用、GC次数、线程数 |
| 数据库监控 | Druid | 连接数、执行时间、慢SQL |
| 缓存监控 | Redis | 命中率、内存使用、命令统计 |
| 业务监控 | Custom | QPS、错误率、响应时间 |
总结
RuoYi-Cloud-Plus通过丰富的功能模块和现代化的技术栈,为企业级应用开发提供了完整的解决方案。本文演示的功能案例涵盖了权限管理、数据操作、缓存策略、消息队列、分布式事务等核心场景,展现了框架的强大能力和灵活性。
核心优势总结
- 全面的技术栈集成:集成了Spring Cloud Alibaba生态的全套组件
- 企业级功能支持:提供完整的权限管理、工作流、多租户等企业需求功能
- 优异的性能表现:通过缓存、异步处理、数据库优化等手段保障系统性能
- 完善的监控体系:提供从基础设施到业务层的全方位监控能力
- 灵活的扩展机制:模块化设计支持快速功能扩展和定制开发
通过实际案例的演示,开发者可以快速掌握RuoYi-Cloud-Plus的核心用法,并将其应用于实际项目开发中,大幅提升开发效率和应用质量。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



