首页
/ maku-boot架构设计与模块划分

maku-boot架构设计与模块划分

2026-02-04 04:58:27作者:申梦珏Efrain

maku-boot 是一个基于 Spring Boot 的低代码开发平台,采用模块化、组件化设计,提供高效、灵活且易于扩展的开发体验。其核心模块包括系统管理、业务模块、框架模块、API 模块和服务模块,支持多技术栈和多种设计模式,如分层架构、策略模式和事件驱动。

maku-boot的整体架构设计

maku-boot 是一个基于 Spring Boot 的低代码开发平台,其整体架构设计采用了模块化、组件化的思想,旨在提供高效、灵活且易于扩展的开发体验。以下将从核心模块、技术栈、设计模式等方面展开详细分析。

核心模块划分

maku-boot 的核心模块主要包括以下几个部分:

  1. 系统管理模块 (maku-boot-system)
    负责系统的基础功能,如用户管理、角色管理、权限控制、日志管理等。该模块是整个平台的核心支撑。

  2. 业务模块 (maku-boot-module)
    包含多个子模块,如代码生成器 (maku-module-generator)、物联网 (maku-module-iot)、会员管理 (maku-module-member) 等。每个子模块独立开发,按需引入。

  3. 框架模块 (maku-framework)
    提供通用工具类、基础组件和扩展功能,如 MyBatis-Plus 扩展、操作日志记录、安全框架等。

  4. API 模块 (maku-boot-api)
    定义统一的接口规范,为前后端分离提供支持。

  5. 服务模块 (maku-server)
    包含应用启动类 (ServerApplication.java) 和 Swagger 配置 (SwaggerConfig.java),是项目的入口模块。

技术栈

maku-boot 采用了以下主流技术栈:

  • 后端

    • Spring Boot 3.4
    • Spring Security 6.4
    • MyBatis-Plus
    • Redis
    • MQTT/TCP(物联网模块)
  • 前端

    • Vue 3
    • Element Plus
  • 数据库支持

    • MySQL
    • PostgreSQL
    • 达梦数据库(国产化支持)
  • 其他

    • 国密加密
    • 多租户支持
    • 信创适配

设计模式与架构思想

  1. 模块化设计
    通过 Maven 多模块管理,将功能拆分为独立的模块,便于维护和扩展。例如,物联网模块 (maku-module-iot) 可以独立部署或集成到主系统中。

  2. 分层架构
    采用经典的分层架构(Controller-Service-DAO),确保代码结构清晰。以下是一个典型的分层示例:

    // Controller 层
    @RestController
    public class SysUserController {
        @Autowired
        private SysUserService userService;
    }
    
    // Service 层
    @Service
    public class SysUserServiceImpl implements SysUserService {
        @Autowired
        private SysUserDao userDao;
    }
    
    // DAO 层
    @Mapper
    public interface SysUserDao extends BaseMapper<SysUserEntity> {}
    
  3. 策略模式
    在消息通知、存储服务等场景中,通过策略模式实现灵活的扩展。例如,消息通知支持多种服务商:

    public interface NotificationStrategy {
        void send(String mobile, String code);
    }
    
    @Service("serviceA")
    public class ServiceANotificationStrategy implements NotificationStrategy {
        @Override
        public void send(String mobile, String code) {
            // 服务A消息通知逻辑
        }
    }
    
  4. 事件驱动
    通过 Spring 事件机制实现异步处理,如登录日志记录:

    @EventListener
    public void onSuccess(AuthenticationSuccessEvent event) {
        // 记录登录成功日志
    }
    

数据流与交互

以下是系统中的一个典型数据流示例(以用户登录为例):

sequenceDiagram
    participant Frontend
    participant Backend
    participant Database

    Frontend->>Backend: 提交登录请求
    Backend->>Database: 查询用户信息
    Database-->>Backend: 返回用户数据
    Backend->>Backend: 验证密码
    Backend-->>Frontend: 返回登录结果

存储服务设计

maku-boot 支持多种存储服务(如云存储、本地存储等),通过抽象接口 StorageService 实现统一调用:

public interface StorageService {
    String upload(byte[] data, String path);
    String upload(InputStream inputStream, String path);
}

@Service
public class CloudStorageService implements StorageService {
    @Override
    public String upload(byte[] data, String path) {
        // 云存储上传逻辑
    }
}

安全性设计

  • 认证与授权
    基于 Spring Security 实现 RBAC 权限控制,支持多因素认证(如验证码)。
  • 国密加密
    对敏感数据(如密码)采用国密算法加密。
  • 日志审计
    记录关键操作日志,便于追溯。

扩展性

maku-boot 通过以下方式确保扩展性:

  1. 插件化设计:业务模块可动态加载或卸载。
  2. 多租户支持:支持字段隔离和数据源隔离。
  3. 低代码开发:通过在线表单设计和代码生成器快速开发业务功能。

maku-boot-system模块详解

maku-boot-system模块是maku-boot项目的核心模块之一,主要负责系统管理功能,包括用户管理、角色管理、权限控制、存储服务、消息通知服务等。以下是对该模块的详细解析。

模块功能概述

maku-boot-system模块提供了以下核心功能:

  1. 用户管理:支持用户增删改查、密码修改、头像上传等功能。
  2. 角色管理:支持角色分配、数据权限控制。
  3. 权限控制:基于Spring Security实现细粒度的权限控制。
  4. 存储服务:支持多种云存储服务和本地存储。
  5. 消息与邮件服务:集成多种消息和邮件服务。
  6. 缓存管理:提供系统参数、邮件配置等缓存功能。

核心组件分析

1. 存储服务

存储服务是maku-boot-system模块的重要功能之一,支持多种云存储和本地存储。以下是存储服务的核心类:

classDiagram
    class StorageService {
        +upload(byte[] data, String path): String
        +upload(InputStream inputStream, String path): String
    }
    class CloudStorageService
    class LocalStorageService

    StorageService <|-- CloudStorageService
    StorageService <|-- LocalStorageService

2. 用户管理

用户管理功能由SysUserServiceImpl类实现,支持用户的基本操作和扩展功能:

@Service
public class SysUserServiceImpl implements SysUserService {
    @Override
    public void save(SysUserVO vo) {
        // 保存用户逻辑
    }

    @Override
    public void update(SysUserVO vo) {
        // 更新用户逻辑
    }
}

3. 权限控制

权限控制基于Spring Security实现,核心类包括SecurityConfigAuthenticationEvents

@Configuration
public class SecurityConfig {
    @Bean
    public AuthenticationManager authenticationManager() {
        // 认证管理器配置
    }
}

@Component
public class AuthenticationEvents {
    @EventListener
    public void onSuccess(AuthenticationSuccessEvent event) {
        // 认证成功事件处理
    }
}

模块依赖

maku-boot-system模块依赖以下核心库:

  • Spring Boot:提供基础框架支持。
  • MyBatis-Plus:简化数据库操作。
  • 云存储SDK:支持云存储服务。
  • JustAuth:支持第三方登录。
<dependencies>
    <dependency>
        <groupId>net.maku</groupId>
        <artifactId>maku-framework</artifactId>
    </dependency>
    <dependency>
        <groupId>com.cloud.storage</groupId>
        <artifactId>cloud-sdk</artifactId>
    </dependency>
    <dependency>
        <groupId>me.zhyd.oauth</groupId>
        <artifactId>JustAuth</artifactId>
    </dependency>
</dependencies>

总结

maku-boot-system模块通过清晰的模块划分和丰富的功能支持,为maku-boot项目提供了强大的系统管理能力。无论是存储服务、用户管理还是权限控制,该模块都体现了高内聚、低耦合的设计思想。

maku-boot-module模块详解

maku-boot-module 是 maku-boot 低代码开发平台的核心模块之一,采用模块化设计,支持按需引入,确保系统功能的灵活性和可扩展性。每个子模块专注于特定的业务或技术领域,开发者可以根据需求选择性地引入模块,避免系统臃肿。以下是对各子模块的详细解析:

1. maku-module-websocket

该模块实现了基于 WebSocket 的实时通信功能,适用于需要实时数据推送的场景,如在线聊天、通知推送等。

核心功能

  • 消息发送:支持单用户、多用户及会话级别的消息推送。
  • 会话管理:维护 WebSocket 会话的生命周期,确保连接的稳定性和可靠性。
  • 用户鉴权:通过 UserHandshakeInterceptor 实现用户身份的验证。

关键类

public class WebSocketMessageSender {
    public void send(Long userId, JsonDataMessage<?> message);
    public void send(List<Long> userIdList, JsonDataMessage<?> message);
    public void send(WebSocketSession session, JsonDataMessage<?> message);
}

public class WebSocketSessionManager {
    public void addSession(WebSocketSession session);
    public void removeSession(WebSocketSession session);
}

流程图

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: WebSocket 连接请求
    Server->>Client: 连接确认
    Client->>Server: 发送消息
    Server->>Client: 推送消息

2. maku-module-member

该模块提供会员管理功能,包括会员信息的增删改查、权限分配等。

核心功能

  • 会员管理:支持会员信息的 CRUD 操作。
  • 权限控制:通过 MemberUserService 实现会员权限的动态配置。

关键类

public class MemberUserServiceImpl {
    public void save(MemberUserVO vo);
    public void update(MemberUserVO vo);
    public void delete(List<Long> idList);
}

表格示例

方法名 功能描述
save 新增会员信息
update 更新会员信息
delete 批量删除会员

3. maku-module-quartz

该模块基于 Quartz 实现了任务调度功能,支持定时任务的动态配置和管理。

核心功能

  • 任务调度:支持任务的创建、暂停、恢复和删除。
  • 日志记录:记录任务执行日志,便于问题排查。

关键类

public class ScheduleJobServiceImpl {
    public void save(ScheduleJobVO vo);
    public void update(ScheduleJobVO vo);
    public void delete(List<Long> idList);
    public void run(ScheduleJobVO vo);
}

状态图

stateDiagram
    [*] --> Idle
    Idle --> Running: 任务启动
    Running --> Paused: 任务暂停
    Paused --> Running: 任务恢复
    Running --> [*]: 任务完成

4. maku-module-monitor

该模块提供系统监控功能,包括服务器状态、缓存管理等。

核心功能

  • 服务器监控:实时监控 CPU、内存、磁盘等资源使用情况。
  • 缓存管理:支持缓存的查看和清理。

关键类

public class Server {
    public static String convertFileSize(long size);
}

public class CacheController {
    public void clearCache();
}

饼图示例

pie
    title 服务器资源占用
    "CPU" : 45
    "内存" : 30
    "磁盘" : 25

5. maku-module-generator

该模块为代码生成器,支持快速生成单表、树表、多表等业务代码。

核心功能

  • 代码生成:根据数据库表结构生成对应的实体类、Service、Controller 等代码。
  • 模板配置:支持自定义代码模板。

关键类

public class CodeGenerator {
    public void generate(TableInfo tableInfo);
}

示例代码

// 生成单表代码
CodeGenerator generator = new CodeGenerator();
generator.generate(tableInfo);

6. maku-module-iot

该模块为物联网设备管理模块,支持设备的连接、命令下发和数据上报。

核心功能

  • 设备管理:支持设备的增删改查。
  • 命令下发:通过 MQTT 或 TCP 协议向设备发送指令。

关键类

public class MQTTService {
    public String asyncSendCommand(IotDeviceEntity device, DeviceCommandEnum command, String payload);
    public DeviceCommandResponseDTO syncSendCommand(IotDeviceEntity device, DeviceCommandEnum command, String payload);
}

时序图

sequenceDiagram
    participant Server
    participant Device
    Server->>Device: 下发命令
    Device->>Server: 返回响应

通过以上模块的灵活组合,maku-boot-module 能够满足多样化的业务需求,同时保持系统的高效和可维护性。

maku-framework框架层解析

maku-framework 是 maku-boot 项目的核心框架层,为整个平台提供了基础功能支持,包括缓存管理、安全认证、日志记录、数据操作等。以下是对其核心模块的详细解析。

核心模块与功能

1. 缓存管理

maku-framework 提供了基于 Redis 的缓存管理功能,支持多种数据结构的操作,包括字符串、哈希、列表等。以下是核心类及其功能:

  • RedisCache:封装了 Redis 的基本操作,如设置、获取、删除键值对,以及哈希和列表的操作。
  • RedisKeys:定义了 Redis 键的生成规则,如验证码、访问令牌等。
// 示例:使用 RedisCache 设置缓存
redisCache.set("user:1", userDetail, 3600); // 缓存用户信息,过期时间为 1 小时

2. 安全认证

安全认证模块基于 Spring Security 扩展,支持多种认证方式(如账号密码、验证码、第三方登录等)。以下是关键组件:

  • TokenStoreCache:管理用户令牌的存储与验证。
  • SecurityUser:提供当前用户信息的静态访问方法。
  • TokenUtils:生成和解析访问令牌。
sequenceDiagram
    participant Client
    participant SecurityFilter
    participant TokenStoreCache
    Client->>SecurityFilter: 请求携带 Token
    SecurityFilter->>TokenStoreCache: 验证 Token
    TokenStoreCache-->>SecurityFilter: 返回用户信息
    SecurityFilter-->>Client: 认证通过

3. 日志记录

操作日志模块通过 AOP 实现,记录用户的操作行为。以下是核心类:

  • OperateLogAspect:切面类,拦截带有 @OperateLog 注解的方法。
  • OperateLogService:异步保存日志到数据库。
// 示例:记录操作日志
@OperateLog(module = "用户管理", type = OperateTypeEnum.INSERT)
public void addUser(User user) {
    // 业务逻辑
}

4. 数据操作

基于 MyBatis-Plus 的数据操作模块提供了通用的 CRUD 功能和数据权限控制。以下是关键组件:

  • MybatisPlusConfig:配置 MyBatis-Plus 的拦截器和元数据处理器。
  • DataScopeInnerInterceptor:实现数据权限控制,动态拼接 SQL。
classDiagram
    class BaseEntity {
        +Long id
        +Date createTime
        +Date updateTime
    }
    class BaseDao {
        +insert(T entity)
        +updateById(T entity)
    }
    BaseEntity <|-- User
    BaseDao <|-- UserDao

5. 工具类

maku-framework 提供了丰富的工具类,简化开发工作:

  • ExcelUtils:支持 Excel 的导入导出。
  • IpUtils:获取客户端 IP 和地理位置。
  • JsonUtils:JSON 数据的序列化与反序列化。
// 示例:导出 Excel
List<User> userList = userService.list();
ExcelUtils.excelExport(User.class, "用户列表.xlsx", "用户数据", userList);

总结

maku-framework 通过模块化设计,为 maku-boot 提供了强大的基础支持。其核心功能包括缓存管理、安全认证、日志记录和数据操作,均通过高度封装的类和方法实现,开发者可以快速集成并扩展这些功能。

登录后查看全文
热门项目推荐
相关项目推荐