在这一章节中,我们将深入探索 ruoyi-common 模块的核心价值所在。作为整个项目的基础组成部分,ruoyi-common 提供了一系列实用工具类和通用组件,它们为开发过程中的各种需求提供了坚实的支持。从数据验证到异常处理,再到日志记录,这些工具和服务为开发者构建高效、可靠的软件系统打下了坚实的基础。
接下来,我们将逐一剖析这些组件的功能,帮助您更好地理解它们是如何协同工作的,以及如何在自己的项目中有效地利用它们。
【ruoyi-common模块】通用模块,结构组成如下:
com.ruoyi
├── ruoyi-common // 通用模块
│ └── ruoyi-common-core // 核心模块
│ └── ruoyi-common-datascope // 权限范围
│ └── ruoyi-common-datasource // 多数据源
│ └── ruoyi-common-log // 日志记录
│ └── ruoyi-common-redis // 缓存服务
│ └── ruoyi-common-seata // 分布式事务
│ └── ruoyi-common-security // 安全模块
└── ruoyi-common-sensitive // 敏感信息脱敏处理
│ └── ruoyi-common-swagger // 系统接口
├──pom.xml // 公共依赖
核心模块:ruoyi-common-core
ruoyi-common-core 模块是 RuoYi-Cloud 项目的核心基础模块,提供了大量的工具类、常量类、异常处理类、注解类和实体类,为项目的其他模块提供了基础支持。通过这些类,可以实现字符串处理、日期处理、文件处理、Excel 处理、异常处理、权限控制、日志记录等多种功能。以下是对该模块中各类作用的分析:
工具类
- SpringUtils: Spring 工具类,用于获取 Spring 容器中的 Bean。
- StringUtils: 字符串处理工具类。
- ServletUtils: Servlet 工具类,提供与 Servlet 相关的实用方法。
- IpUtils: IP 地址处理工具类。
- BeanUtils: Bean 工具类,用于 Bean 对象的复制等操作。
- JwtUtils: JWT 工具类,用于 JWT 的生成和解析。
- DateUtils: 日期处理工具类。
- PageUtils: 分页工具类。
- FileUtils: 文件处理工具类。
- ImageUtils: 图片处理工具类。
- ExcelUtil: Excel 处理工具类。
- SqlUtil: SQL 处理工具类。
- ReflectUtils: 反射工具类。
- Poi: 与 Apache POI 相关的工具类,用于处理 Excel 文件。
- UUID: UUID 生成工具类。
- IdUtils: ID 生成工具类。
- Base64: Base64 编码解码工具类。
- SecurityUtils: 安全相关工具类。
- DictUtils: 字典工具类。
- ExceptionUtil: 异常处理工具类。
- MimeTypeUtils: MIME 类型工具类。
- FileTypeUtils: 文件类型工具类。
- EscapeUtil: HTML 转义工具类。
- HTMLFilter: HTML 过滤工具类。
- Seq: 序列生成工具类。
- CharsetKit: 字符集工具类。
- StrFormatter: 字符串格式化工具类。
- BeanValidators: Bean 验证工具类。
常量类
- CacheConstants: 缓存常量类。
- TokenConstants: Token 常量类。
- ScheduleConstants: 调度常量类。
- UserConstants: 用户常量类。
- GenConstants: 代码生成常量类。
- HttpStatus: HTTP 状态码常量类。
- SecurityConstants: 安全常量类。
- ServiceNameConstants: 服务名称常量类。
- Constants: 通用常量类。
异常处理类
- ServiceException: 服务异常类。
- GlobalException: 全局异常类。
- BaseException: 基础异常类。
- CheckedException: 已检查异常类。
- UtilException: 工具类异常。
- PreAuthorizeException: 权限异常类。
- CaptchaException: 验证码异常类。
- DemoModeException: 演示模式异常类。
- InnerAuthException: 内部认证异常类。
- FileException: 文件异常类。
- FileUploadException: 文件上传异常类。
- FileSizeLimitExceededException: 文件大小超出限制异常类。
- FileNameLengthLimitExceededException: 文件名长度超出限制异常类。
- InvalidExtensionException: 无效扩展名异常类。
- TaskException: 任务异常类。
- UserException: 用户异常类。
- UserPasswordNotMatchException: 用户密码不匹配异常类。
- CaptchaExpireException: 验证码过期异常类。
- NotLoginException: 未登录异常类。
- NotPermissionException: 无权限异常类。
- NotRoleException: 无角色异常类。
注解类
- Excel: Excel 导出注解。
- Excels: 多个 Excel 导出注解。
- DataScope: 数据权限注解。
- Log: 日志注解。
- InnerAuth: 内部认证注解。
- RequiresLogin: 需要登录注解。
- RequiresPermissions: 需要权限注解。
- RequiresRoles: 需要角色注解。
实体类
- BaseEntity: 基础实体类。
- TreeEntity: 树形实体类。
- AjaxResult: Ajax 结果实体类。
- R: 响应结果实体类。
- PageDomain: 分页域实体类。
- TableDataInfo: 表格数据信息实体类。
- TableSupport: 表格支持实体类。
枚举类
- UserStatus: 用户状态枚举类。
- BusinessType: 业务类型枚举类。
- BusinessStatus: 业务状态枚举类。
- OperatorType: 操作人类别枚举类。
- Status: 状态枚举类。
其他
- XssValidator: XSS 验证器。
- Xss: XSS 过滤器。
- Convert: 类型转换工具类。
- SecurityContextHolder: 安全上下文持有类。
- ExcelHandlerAdapter: Excel 处理器适配器。
权限范围:ruoyi-common-datascope
ruoyi-common-datascope 模块主要通过注解和切面实现数据权限的控制。DataScope 注解用于标记需要进行数据权限控制的方法或类,而 DataScopeAspect 切面则在方法执行前后进行数据权限的过滤处理。通过这种方式,可以灵活地控制不同用户对数据的访问权限,确保数据的安全性和合规性。
注解类
- DataScope: 数据权限注解,用于标记需要进行数据权限控制的方法或类。
切面类
- DataScopeAspect: 数据权限切面,用于在方法执行前后进行数据权限的过滤处理。
多数据源:ruoyi-common-datasource
ruoyi-common-datasource 模块主要通过注解的方式实现主从数据源的切换。Master 注解用于标记需要使用主数据源的方法或类,而 Slave 注解用于标记需要使用从数据源的方法或类。通过这种方式,可以在运行时动态地切换数据源,从而实现读写分离,提高系统的性能和可用性。
注解类
- Master: 用于标记方法或类使用主数据源。
- Slave: 用于标记方法或类使用从数据源。
日志记录:ruoyi-common-log
ruoyi-common-log 模块主要通过注解、切面和异步服务的方式实现日志的记录和管理。Log 注解用于标记需要记录日志的方法或类,LogAspect 切面在方法执行前后记录日志,AsyncLogService 异步服务用于异步记录日志,从而提高系统的性能。通过这些组件,可以方便地记录和管理系统的操作日志,便于后续的审计和问题排查。
注解类
- Log: 日志注解,用于标记需要记录日志的方法或类。
枚举类
- BusinessStatus: 业务状态枚举,用于表示业务操作的结果状态。
- BusinessType: 业务类型枚举,用于表示业务操作的类型。
- OperatorType: 操作人类别枚举,用于表示操作人的类别。
过滤器类
- PropertyPreExcludeFilter: 属性预排除过滤器,用于在日志记录时排除某些敏感属性。
切面类
- LogAspect: 日志切面,用于在方法执行前后记录日志。
服务类
- AsyncLogService: 异步日志服务,用于异步记录日志。
缓存服务:ruoyi-common-redis
ruoyi-common-redis 模块通过配置类 RedisConfig 配置 Redis 相关的设置,使用自定义的序列化器 FastJson2JsonRedisSerializer 将对象序列化为 JSON 格式存储到 Redis 中,并通过 RedisService 提供了一系列操作 Redis 的方法,方便在项目中集成和使用 Redis 缓存功能。
配置类
- RedisConfig: Redis 配置类,用于配置 Redis 相关的设置,包括 RedisTemplate 的配置和序列化器的设置。
序列化类
- FastJson2JsonRedisSerializer: 自定义的 JSON 序列化器,用于将对象序列化为 JSON 格式存储到 Redis 中,基于 FastJson 实现。
服务类
- RedisService: Redis 服务类,提供了一系列操作 Redis 的方法,包括设置缓存、获取缓存、删除缓存等操作。
分布式事务:ruoyi-common-seata
ruoyi-common-seata 模块主要用于集成 Seata 分布式事务管理功能,确保在微服务架构中实现分布式事务的一致性和可靠性。由于没有具体的类或接口文件路径,无法提供详细的类或接口作用分析。通常,Seata 的集成会涉及配置类、事务管理器、数据源代理等组件,用于在微服务之间协调事务,确保数据的一致性。
安全模块:ruoyi-common-security
ruoyi-common-security 模块通过注解、配置类、服务类、切面类、处理器类、拦截器类和工具类等方式,提供了全面的安全功能和配置,包括权限校验、角色校验、Token 处理、全局异常处理、Feign 客户端配置等,确保系统的安全性和可靠性。
注解类
- EnableCustomConfig: 启用自定义配置的注解。
- EnableRyFeignClients: 启用 Feign 客户端的注解。
- RequiresLogin: 需要登录的注解,用于标记需要登录才能访问的方法或类。
- RequiresPermissions: 需要权限的注解,用于标记需要特定权限才能访问的方法或类。
- RequiresRoles: 需要角色的注解,用于标记需要特定角色才能访问的方法或类。
- InnerAuth: 内部认证的注解,用于标记内部认证的方法或类。
- Logical: 逻辑注解,用于指定权限或角色的逻辑关系(AND 或 OR)。
配置类
- ApplicationConfig: 应用配置类,用于配置应用相关的设置。
- WebMvcConfig: Web MVC 配置类,用于配置 Spring MVC 相关的设置。
服务类
- TokenService: Token 服务类,用于处理 Token 相关的操作,如生成、解析和验证 Token。
切面类
- PreAuthorizeAspect: 权限校验切面,用于在方法执行前进行权限校验。
- InnerAuthAspect: 内部认证切面,用于在方法执行前进行内部认证校验。
处理器类
- GlobalExceptionHandler: 全局异常处理器,用于处理全局异常。
拦截器类
- HeaderInterceptor: 头部拦截器,用于拦截请求并处理头部信息。
Feign 相关类
- FeignAutoConfiguration: Feign 自动配置类,用于配置 Feign 客户端。
- FeignRequestInterceptor: Feign 请求拦截器,用于在 Feign 请求前进行拦截处理。
工具类
- AuthUtil: 认证工具类,用于处理认证相关的操作。
- AuthLogic: 认证逻辑类,用于实现具体的认证逻辑。
- DictUtils: 字典工具类,用于处理字典相关的操作。
- SecurityUtils: 安全工具类,用于处理安全相关的操作,如获取当前用户信息。
敏感信息脱敏处理:ruoyi-common-sensitive
ruoyi-common-sensitive 模块通过注解、枚举、工具类和配置类等方式,提供了敏感信息脱敏的功能。通过在字段上添加 Sensitive 注解,并指定脱敏类型,可以在对象序列化为 JSON 时自动对敏感信息进行脱敏处理,保护用户隐私和数据安全。
注解类
- Sensitive: 敏感信息脱敏注解,用于标记需要进行脱敏处理的字段。
枚举类
- DesensitizedType: 脱敏类型枚举,定义了不同的脱敏类型,如手机号、身份证号、邮箱等。
工具类
- DesensitizedUtil: 脱敏工具类,提供了各种脱敏方法,用于对不同类型的敏感信息进行脱敏处理。
配置类
- SensitiveJsonSerializer: 敏感信息 JSON 序列化器,用于在对象序列化为 JSON 时对敏感字段进行脱敏处理。
系统接口:ruoyi-common-swagger
ruoyi-common-swagger 模块通过注解和配置类的方式,提供了 Swagger 文档生成的功能。通过 EnableCustomSwagger2 注解可以启用自定义的 Swagger 配置,SwaggerAutoConfiguration 类负责自动配置 Swagger 相关的设置,SwaggerWebConfiguration 类配置 Swagger 的 Web 相关设置,SwaggerBeanPostProcessor 类在 Bean 初始化后进行 Swagger 相关的处理,SwaggerProperties 类定义了 Swagger 相关的属性配置,包括联系信息和授权信息。这些组件共同协作,使得项目可以方便地生成和展示 API 文档。
注解类
- EnableCustomSwagger2: 启用自定义 Swagger 配置的注解,用于标记需要启用 Swagger 的配置类。
配置类
- SwaggerAutoConfiguration: Swagger 自动配置类,用于自动配置 Swagger 相关的设置。
- SwaggerWebConfiguration: Swagger Web 配置类,用于配置 Swagger 的 Web 相关设置。
- SwaggerBeanPostProcessor: Swagger Bean 后处理器,用于在 Bean 初始化后进行 Swagger 相关的处理。
- SwaggerProperties: Swagger 属性配置类,用于定义 Swagger 相关的属性配置。
- SwaggerProperties.Contact: Swagger 联系信息配置类,用于定义 Swagger 文档的联系信息。
- SwaggerProperties.Authorization: Swagger 授权配置类,用于定义 Swagger 文档的授权信息。
- SwaggerProperties.AuthorizationScope: Swagger 授权范围配置类,用于定义 Swagger 文档的授权范围。