Molan Core
同仓后端的双模驱动核心库,代码在 backend/core。核心亮点是一套业务代码,本地单体开发,服务器可微服务部署。
业务侧只依赖一个 Maven 坐标 core;能力按 Java 包划分。
核心价值
传统方案的两难:
- 初期上微服务 → 开发慢、调试难
- 后期再拆微服务 → 推倒重来、风险大
Molan 双模方案:
- 初期用单体极速开发、本地调试
- 部署时按需切到微服务,业务代码零改动
包结构
能力清单
| 包 | 说明 |
|---|---|
| util | 通用工具(含 tree / SpringUtils / UserAgentUtil) |
| web | 统一响应、JSON、XSS、Servlet 过滤器等 |
| task | 任务调度(TaskUtil,虚拟线程) |
| cache | 缓存(含 Redis) |
| db | MyBatis-Plus 约定 + 动态数据源 |
| encrypt | 全链路加密 |
| lock | 分布式锁 / 幂等 |
| rpc | Feign 增强,智能本地调用 |
| event | 统一事件总线 |
| file | 本地 / 云文件存储 |
| config | MolanMode(molandev.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/ # 单体统一入口业务侧用法见 应用文档 · 快速开始。