Appearance
micro-java 本地启动
本文在 MySQL 已就绪 的前提下,启动 micro-java 全套微服务并与 Web 管理后台联调。
环境要求
| 工具 | 版本 |
|---|---|
| JDK | 17+ |
| Maven | 3.9+ |
| Docker Desktop | MySQL;建议同时用容器跑 Nacos / RabbitMQ |
| Node.js + pnpm | 仅用于 pnpm --filter @xichen-micro/* dev 包装命令 |
1. 启动 MySQL
bash
docker compose up -d首次启动自动执行 contracts/sql/schema.sql。
2. 启动中间件
micro-java 至少需要 Nacos 与 RabbitMQ(system-service 默认 app.messaging.type=rabbitmq)。
方式 A:Docker 快速拉起(推荐)
bash
# Nacos 2.x(单机模式)
docker run -d --name xichen-nacos -p 8848:8848 -p 9848:9848 \
-e MODE=standalone \
nacos/nacos-server:v2.3.2
# RabbitMQ(含管理界面 :15672,默认 guest/guest — 生产请改账号)
docker run -d --name xichen-rabbitmq -p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=xichen \
-e RABBITMQ_DEFAULT_PASS=xichen123 \
rabbitmq:3-management与 system-service 默认配置对齐:RABBITMQ_USER=xichen、RABBITMQ_PASSWORD=xichen123。
方式 B:简化本地(关闭可选组件)
若暂不安装 Seata,启动 system-service 前设置:
bash
# PowerShell
$env:SEATA_ENABLED="false"Seata 关闭后,assignRoles 的 @GlobalTransactional 退化为本地事务,RBAC 主流程仍可验证。
Kafka 仅在 MESSAGING_TYPE=kafka 时需要;默认 RabbitMQ 即可。
详见 中间件依赖。
3. 编译 Maven 多模块
bash
cd packages/micro-java
mvn install -DskipTests修改 xichen-common 或 xichen-domain 后须重复此步骤。
4. 启动微服务(顺序建议)
开 四个终端,先业务服务、最后网关:
bash
# 终端 1 — 认证服务 :8081
pnpm --filter @xichen-micro/auth-service dev
# 终端 2 — 系统服务 :8082(可选 SEATA_ENABLED=false)
pnpm --filter @xichen-micro/system-service dev
# 终端 3 — 监控服务 :8083
pnpm --filter @xichen-micro/monitor-service dev
# 终端 4 — 网关 :8080(等 Nacos 中已有上述三个业务实例)
pnpm --filter @xichen-micro/gateway dev或在 packages/micro-java 目录:
bash
mvn -pl auth-service spring-boot:run
mvn -pl system-service spring-boot:run
mvn -pl gateway spring-boot:run5. 验证后端
bash
curl http://localhost:8080/api/v1/health
# 期望 data.service = auth-service
curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"password\":\"admin123\"}"Nacos 控制台 http://localhost:8848/nacos(默认 nacos/nacos)应能看到 auth-service、system-service、monitor-service、gateway 注册。
6. 联调 Web 管理后台
bash
pnpm --filter @xichen-full-stack/types build
pnpm --filter @xichen-full-stack/auth build
pnpm --filter @xichen-full-stack/api-client build
pnpm --filter web devpackages/web/.env.development(推荐:走 Vite 代理,无 CORS):
env
# 留空表示同源请求 /api → vite proxy → :8080
VITE_API_BASE_URL=packages/web/src/main.ts 使用 ?? 回退:空字符串不会覆盖为 http://localhost:8080。
若需浏览器直连 Gateway,可改为:
env
VITE_API_BASE_URL=http://localhost:8080此时须确保 Gateway 已配置 CORS(见 Gateway — CORS)。
浏览器 http://localhost:5173 ,账号 admin / admin123。
login 须 POST
/api/v1/auth/login 仅支持 POST。在浏览器地址栏直接打开会 404/405;用 Web 登录页或 curl -X POST 测试。
7. 验证清单
- [ ] Nacos 中四个服务均为健康实例
- [ ]
GET /api/v1/health经网关正常 - [ ] 登录成功,侧边栏菜单完整(部门/字典/监控等)
- [ ] 用户 / 角色 / 菜单 / 部门 / 字典 CRUD 可用
- [ ]
POST /api/v1/system/database/init可重置库(开发环境) - [ ] 新建用户后 system-service 日志出现
[RabbitMQ] Received UserCreatedEvent
常见问题
- Nacos 未启动 → gateway 报
503或无法解析lb://auth-service - RabbitMQ 未启动 → system-service 启动失败(连接拒绝)
- JWT 校验失败 → 确认 auth-service 与 system-service 的
JWT_SECRET一致 - 菜单为空 → 确认已调用
POST /api/v1/system/database/init,且 auth / system / monitor 均已启动
更多排障见 常见问题 — micro-java。