# demo-spring-cloud **Repository Path**: frailty/demo-spring-cloud ## Basic Information - **Project Name**: demo-spring-cloud - **Description**: spring-cloud + rabbitmq 的demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Demo Cloud 微服务项目 基于 Spring Cloud + Spring Cloud Alibaba 的微服务示例项目,演示用户认证、订单处理和消息通知的完整流程。 ## 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 3.5.15 | 基础框架 | | Spring Cloud | 2025.0.3 | 微服务框架 | | Spring Cloud Alibaba | 2025.0.0.0 | 阿里云生态组件 | | Nacos | - | 服务发现与配置中心 | | MySQL | - | 关系型数据库 | | MyBatis Plus | 3.5.16 | ORM 框架 | | RabbitMQ | - | 消息队列 | | JWT | 0.12.3 | JSON Web Token 认证 | | Java | 17 | 开发语言 | ## 项目结构 ``` demo-cloud/ ├── demo-common/ # 公共模块 ├── demo-auth/ # 认证服务 ├── demo-getway/ # API 网关 ├── demo-order/ # 订单服务 ├── demo-notify/ # 通知服务 ├── demo-codegen/ # 代码生成器 ├── db/ # 数据库脚本 └── pom.xml # 父 POM ``` ## 模块说明 ### 1. demo-common 公共模块,被其他所有服务依赖。 - **domain/entity** - 实体类:`User`、`Order`、`Notify` - **domain/mapper** - MyBatis Plus Mapper 接口 - **auth** - JWT 认证工具类 - **feign** - OpenFeign 远程调用客户端 - **mp** - 公共配置(自动填充处理器等) ### 2. demo-auth 用户认证服务,提供登录功能。 - 集成 Spring Security 安全框架 - 使用 BCrypt 密码加密 - 提供 JWT Token 签发 ### 3. demo-order 订单服务,核心业务模块。 - 创建订单 - 通过 RabbitMQ 发送订单消息 - 集成 Spring Security 鉴权 ### 4. demo-notify 通知服务,消费 RabbitMQ 消息。 - 监听订单创建消息 - 生成通知记录 ### 5. demo-getway API 网关(开发中) ### 6. demo-codegen 代码生成器,基于 `framegen` 框架。 ## 业务流程 ``` ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Client │───▶│ Auth │ │ Order │───▶│ Rabbit │ │ │ │ Service │ │ Service │ │ MQ │ └──────────┘ └──────────┘ └──────────┘ └────┬─────┘ │ ▼ ┌──────────┐ │ Notify │ │ Service │ └──────────┘ ``` 1. 用户通过 `demo-auth` 进行登录认证,获取 JWT Token 2. 携带 Token 调用 `demo-order` 创建订单 3. 订单创建成功后,发送消息到 RabbitMQ 4. `demo-notify` 消费消息,生成通知 ## 环境准备 ### 依赖服务 - **Nacos Server** - 服务发现与配置中心(默认端口 8848) - **MySQL** - 数据库(默认端口 3306) - **RabbitMQ** - 消息队列(默认端口 5672) ### 数据库初始化 ```bash mysql -u root -p < db/init.sql ``` ### 启动服务 ```bash # 打包 ./mvnw clean package -DskipTests # 启动认证服务 java -jar demo-auth/target/demo-auth-0.0.1-SNAPSHOT.jar # 启动订单服务 java -jar demo-order/target/demo-order-0.0.1-SNAPSHOT.jar # 启动通知服务 java -jar demo-notify/target/demo-notify-0.0.1-SNAPSHOT.jar ``` ## API 示例 ### 登录认证 ```bash # 登录获取 Token curl -X POST http://localhost:8080/api/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"123456"}' ``` ### 创建订单 ```bash # 创建订单(需要携带 JWT Token) curl -X POST http://localhost:8081/api/order/create \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"testMark":"test data"}' ``` ## 认证流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ Filter Chain │ │ │ │ HTTP请求 ──▶ URL鉴权规则匹配 ──▶ 获取令牌 ──▶ 验证令牌 │ │ │ │ │ │ ▼ ▼ │ │ 放行直接通过 验证失败返回403 │ │ │ │ │ │ ▼ ▼ │ │ DispatcherServlet ◀── 令牌不存在 │ │ 返回401 │ └─────────────────────────────────────────────────────────────┘ ``` ## 开发说明 ### 公共模块使用 其他服务引入 `demo-common`: ```xml com.example.springcloud demo-common 0.0.1-SNAPSHOT ``` ### 添加新服务 1. 在根目录创建新模块目录 2. 在 `pom.xml` 的 `` 中添加新模块 3. 继承父 POM 并添加所需依赖 ## License MIT License