Appearance
micro-java 微服务后端概览
路径:packages/micro-java
技术:Spring Boot 3.3 + Spring Cloud 2023 + Spring Cloud Alibaba + MyBatis-Plus + JWT
与 packages/server-java(单体 Spring Boot)并列,是 同一套 RBAC 契约 的另一种 Java 实现方式:按领域拆分为认证服务与系统服务,经 API 网关对外统一暴露 :8080。
与 server-java 对比
| 维度 | server-java(单体) | micro-java(微服务) |
|---|---|---|
| 架构 | 单进程,auth + system 同包 | gateway + auth-service + system-service |
| 对外端口 | 8080 | 8080(gateway) |
| 服务发现 | 无 | Nacos |
| 数据库 | 直连 MySQL | auth / system 各自连接;system 经 ShardingSphere-JDBC(当前单库) |
| 分布式能力 | 无 | Seata(角色分配)、RabbitMQ/Kafka(用户创建事件)、Resilience4j 熔断 |
| 本地依赖 | MySQL | MySQL + Nacos + RabbitMQ(默认);Seata / Kafka 可选 |
| 适用场景 | 快速开发、小团队 | 学习/演示微服务栈、后续水平扩展 |
前端 无需改代码:VITE_API_BASE_URL=http://localhost:8080 与单体版相同,请求仍走 /api/v1/*。
Maven 多模块结构
text
packages/micro-java/
├── pom.xml # 父 POM(Spring Cloud Alibaba BOM)
├── xichen-common/ # JWT、SecurityConfig、ApiResponse、全局异常
├── xichen-domain/ # Entity、Mapper、DTO(auth + system 共享)
├── auth-service/ # 登录、Token、/auth/me、改密 (:8081)
├── system-service/ # 用户/角色/菜单/权限 CRUD、MQ、Seata (:8082)
└── gateway/ # Spring Cloud Gateway + 熔断降级 (:8080)各可运行服务在 pnpm workspace 中注册了 package.json,可用 filter 启动:
| npm 包名 | 说明 |
|---|---|
@xichen-micro/gateway | API 网关 |
@xichen-micro/auth-service | 认证服务 |
@xichen-micro/system-service | 系统管理服务 |
快速启动(摘要)
完整步骤见 本地启动。
bash
# 1. 基础设施
docker compose up -d # MySQL
# 另需 Nacos :8848、RabbitMQ :5672(见基础设施文档)
# 2. 编译多模块(首次或改 common/domain 后)
cd packages/micro-java
mvn install -DskipTests
# 3. 按顺序启动(三个终端)
pnpm --filter @xichen-micro/auth-service dev
pnpm --filter @xichen-micro/system-service dev
pnpm --filter @xichen-micro/gateway dev
# 4. 验证
curl http://localhost:8080/api/v1/health默认管理员:admin / admin123(由 system-service 的 DataSeeder 写入)。
API 与文档
| 入口 | 地址 |
|---|---|
| 统一 API(前端使用) | http://localhost:8080/api/v1/... |
| auth Swagger(经网关) | http://localhost:8080/auth-service/swagger-ui.html |
| system Swagger(经网关) | http://localhost:8080/system-service/swagger-ui.html |
| Gateway Actuator | http://localhost:8080/actuator/gateway |
契约与单体版一致:contracts/openapi/rbac-api.yaml。