RuoYi-Cloud-Plus Documentation

repository·6.X·Indexed 22 days ago

https://github.com/dromara/ruoyi-cloud-plus

A microservices-based general permission management system and a non-compatible rewrite of RuoYi-Cloud. Built for high-performance enterprise applications using Spring Boot 4.1, JDK 21/25, and a modern stack including Vue3, TS, ElementPlus, Apache Dubbo 3.X, Sa-Token, and MyBatis-Plus. It features advanced capabilities such as multi-datasource management, automated data masking and encryption, and integrated observability via Prometheus, Grafana, and SkyWalking.

Tokens
6.7K
Snippets
15
Records
34
Agent score
78%

What's inside RuoYi-Cloud-Plus

  1. Overview of RuoYi-Cloud-Plus

    6.X

    RuoYi-Cloud-Plus is a microservices-based general permission management system. It is a complete rewrite and comprehensive upgrade of the original RuoYi-Cloud framework, meaning it is not compatible with the original framework.

    Key Technical Specifications

    • Core Framework: Spring Boot 4.1
    • JDK Support: JDK 21 and JDK 25
    • License: MIT (Open source and free for commercial use, provided the license file is retained)
  2. Overview of ruoyi-gateway

    6.X

    The ruoyi-gateway service is a Servlet MVC implementation of spring-cloud-gateway.

    Performance Note: To achieve optimal performance, it is highly recommended to run this service using JDK 21 with Virtual Threads enabled. Running this service on JDK 17 may result in significantly lower performance compared to the original Spring Cloud Gateway implementation.

  3. Compare RuoYi-Cloud-Plus with standard RuoYi

    6.X

    RuoYi-Cloud-Plus is an enhanced version of the RuoYi framework designed for high scalability, modern tech stacks, and enterprise-grade distributed features. Key improvements include:

    • Frontend: Rewritten with Vue3 + TS + ElementPlus (vs Vue2/3 + JS).
    • Architecture: Uses a plugin-based and extensible package structure for decoupling, whereas standard RuoYi has high module coupling.
    • RPC: Uses Apache Dubbo 3.X for stable remote calls (vs Feign).
    • Auth: Uses Sa-Token and JWT for high flexibility and complex permission expressions (vs Spring Security).
    • Database/ORM: Uses MyBatis-Plus for object-oriented operations and automatic SQL generation (vs standard MyBatis XML).
    • Distributed Features: Built-in support for Seata (transactions), Nacos (registry/config), SnailJob (task scheduling), and SkyWalking (tracing).
    • Data Handling: Advanced features for Data Masking, Encryption/Decryption, and Data Translation via annotations.
    • Storage: Supports Minio/RustFS and S3-compatible cloud storage (vs local file storage).
    • Monitoring: Integrated Prometheus, Grafana, and SpringBoot-Admin for full-stack observability.
  4. Compare RuoYi-Cloud-Plus with standard RuoYi

    6.X

    RuoYi-Cloud-Plus extends the standard RuoYi functionality with several advanced business capabilities. Key differences include:

    • Client Management: Supports managing all system clients (PC, Mini-programs, etc.), dynamic login methods (SMS, password), and dynamic token expiration control.
    • File Management: Includes full file management (upload, download, delete) and dynamic file configuration management.
    • Task Management: Provides full task management (add, modify, delete), report running, and executor management (standard RuoYi only supports task and log management).
    • Code Generation: Supports multi-datasource code generation (Java, HTML, XML, SQL) with CRUD download capabilities (standard RuoYi is limited to single datasource).
    • Service Monitoring: Provides cluster-wide monitoring for CPU, memory, disk, stack, online logs, and Spring configurations (standard RuoYi only supports single-machine monitoring).
    • Use Cases: Includes built-in functional use case demonstrations.
  5. Automate data operations with MyBatis-Plus

    6.X

    The framework leverages MyBatis-Plus to reduce manual SQL writing and enhance data management:

    • CRUD: Perform almost all operations using pure Java objects.
    • Plugins: Includes built-in support for Multi-tenancy, Pagination, and Optimistic Locking.
    • Data Permissions: Uses a MyBatis-Plus plugin to perform seamless, transparent SQL filtering based on Mapper annotations (supporting custom logic beyond just department/role).
    • Pagination: Uses an extended MyBatis-Plus pagination plugin that supports object-oriented pagination, multiple parameter types, and complex multi-field sorting.
  6. Implement data security with annotations

    6.X

    RuoYi-Cloud-Plus provides several automated data handling mechanisms using annotations:

    • Data Masking: Uses annotations + Jackson serialization to mask sensitive data (e.g., ID cards, phone numbers, emails, bank cards) based on different module strategies.
    • Data Encryption/Decryption: Uses annotations + MyBatis interceptors to automatically encrypt/decrypt data during storage and retrieval. Supported strategies include BASE64, AES, RSA, SM2, and SM4.
    • Data Translation: Uses annotations + Jackson serialization to dynamically translate data during serialization using mapping or custom interface-based logic.
  7. Manage multiple data sources with dynamic-datasource

    6.X

    The framework uses dynamic-datasource to manage heterogeneous databases.

    • Configuration: Manage different database types via yml configuration.
    • Dynamic Switching: Supports switching data sources at runtime using SpEL expressions based on request headers or other parameters.
    • Transactions: Supports distributed transactions across different types of databases via dynamic-datasource.
    • UI Management: Allows adding data sources through a frontend interface.
  8. Use Sa-Token for permission and authentication

    6.X

    RuoYi-Cloud-Plus uses Sa-Token for lightweight, low-coupling authentication and authorization. It supports various validation types via annotations, including:

    • Login validation
    • Role validation
    • Permission validation
    • Two-level authentication
    • HttpBasic validation
    • Ignore validation

    Unlike standard RuoYi, Sa-Token supports complex logical expressions for role and permission checks, such as AND, OR, or combinations like Permission OR Role.

  9. Set permissions for RabbitMQ data directory

    6.X

    When using the Docker-based RabbitMQ setup, you must grant read and write permissions to the data directory to ensure RabbitMQ can persist data. If permissions are not set correctly, the service will fail to write data.

    Execute the following command on the host machine to grant full permissions to the directory:

    chmod 777 /docker/rabbitmq/data
  10. Import Grafana dashboards for monitoring

    6.X

    You can generate monitoring dashboards in Grafana by importing the JSON configuration files located in this directory. The available dashboards cover Spring Boot statistics, JVM metrics, and Nacos metrics.

    Available Dashboards

    File NameDescriptionOriginal Grafana Dashboard ID
    Spring Boot 3.x Statistics.jsonMetrics for Spring Boot 3.x/4.x using Micrometer Prometheus.20727
    SLS JVM监控大盘.jsonJVM Micrometer metrics.4701
    Nacos.jsonNacos Prometheus metrics.13221