Skip to content

Molan Core

同仓后端的双模驱动核心库,代码在 backend/core。核心亮点是一套业务代码,本地单体开发,服务器可微服务部署

业务侧只依赖一个 Maven 坐标 core;能力按 Java 包划分。

核心价值

传统方案的两难:

  • 初期上微服务 → 开发慢、调试难
  • 后期再拆微服务 → 推倒重来、风险大

Molan 双模方案:

  • 初期用单体极速开发、本地调试
  • 部署时按需切到微服务,业务代码零改动

包结构

能力清单

说明
util通用工具(含 tree / SpringUtils / UserAgentUtil)
web统一响应、JSON、XSS、Servlet 过滤器等
task任务调度(TaskUtil,虚拟线程)
cache缓存(含 Redis)
dbMyBatis-Plus 约定 + 动态数据源
encrypt全链路加密
lock分布式锁 / 幂等
rpcFeign 增强,智能本地调用
event统一事件总线
file本地 / 云文件存储
configMolanModemolandev.mode

双模式架构

特性单体(mode: standalone微服务(mode: microservice
RPC自动走本地实现跨服务 Feign HTTP
事件Spring Event 内存分发RabbitMQ 跨服务
数据源多数据源同进程每服务单数据源
默认 Memory默认 Redisson(需 Redis)
部署单进程多进程 + Nacos / RabbitMQ

切换方式:改 molandev.mode 即可,业务代码不动。

配置示例

yaml
# 单体
molandev:
  mode: standalone
  # lock.type 可不配,默认 memory
  service-name:
    base: ${spring.application.name}
    knowledge: ${spring.application.name}
yaml
# 微服务
molandev:
  mode: microservice
  # lock.type 可不配,默认 redisson(需存在 RedissonClient)
  service-name:
    base: base-service
    knowledge: knowledge-service

spring:
  rabbitmq:
    host: localhost
    port: 5672

使用说明

业务模块通过同仓 Maven 模块依赖 core,无需额外引入外部包。

最小化示例

java
import com.molandev.core.util.IdUtils;
import com.molandev.core.web.json.JSONUtils;
import com.molandev.core.lock.utils.LockUtils;

String uuid = IdUtils.uuid();
String json = JSONUtils.toJsonString(user);
LockUtils.runInLock("ORDER_" + orderId, () -> {
    // 业务逻辑
});

与业务工程的关系

backend/core/                 # 双模内核(包:rpc / event / lock / web / db / …)

backend/
├── apis/                     # Feign 契约
├── base-service/
├── knowledge-service/
├── xiuxian-service/
├── gateway-service/
└── standalone-service/       # 单体统一入口

业务侧用法见 应用文档 · 快速开始

下一步