# demo-parent **Repository Path**: wangtsingx/demo-parent ## Basic Information - **Project Name**: demo-parent - **Description**: # Spring Cloud 最小 Demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Cloud 最小 Demo ## 技术栈 | 层次 | 组件 | |------|------| | 后端框架 | Spring Boot 2.2.1 + Spring Cloud Hoxton.SR1 | | 注册/配置中心 | Nacos 2.3.2 | | API 网关 | Spring Cloud Gateway | | 持久层 | MyBatis-Plus 3.3.0 | | 数据库 | PostgreSQL | ## 项目结构 ``` demo-parent/ ├── pom.xml 父模块 BOM ├── init.sql 数据库初始化脚本 ├── user-service/ 业务微服务 │ └── src/main/ │ ├── java/com/demo/ │ │ ├── UserServiceApplication.java │ │ ├── common/R.java 通用响应体 │ │ ├── config/ │ │ │ ├── MybatisPlusConfig.java 分页插件 + 自动填充 │ │ │ └── GlobalExceptionHandler.java │ │ ├── entity/User.java │ │ ├── mapper/UserMapper.java │ │ ├── service/UserService.java │ │ └── controller/UserController.java │ └── resources/ │ ├── bootstrap.yml Nacos 地址(优先加载) │ ├── application.yml 数据源、MyBatis-Plus │ └── mapper/UserMapper.xml └── gateway-service/ API 网关 └── src/main/ ├── java/com/demo/ │ ├── GatewayApplication.java │ └── filter/RequestLogFilter.java 请求日志过滤器 └── resources/ ├── bootstrap.yml └── application.yml 路由规则、跨域配置 ``` ## 快速启动 ### 前置条件 - JDK 8+ - Maven 3.6+ - PostgreSQL(本地或 Docker) - Nacos 2.3.2 Server ### 1. 启动 PostgreSQL ```bash # Docker 方式(可选) docker run -d --name postgres \ -e POSTGRES_PASSWORD=postgres \ -p 5432:5432 postgres:14 # 创建数据库 psql -U postgres -c "CREATE DATABASE demo_db;" # 初始化表结构 psql -U postgres -d demo_db -f init.sql ``` ### 2. 启动 Nacos(单机模式) ```bash # 下载:https://github.com/alibaba/nacos/releases/tag/2.3.2 sh bin/startup.sh -m standalone # 控制台:http://localhost:8848/nacos 默认账号 nacos/nacos ``` ### 3. 编译打包 ```bash cd demo-parent mvn clean package -DskipTests ``` ### 4. 启动服务 ```bash # 先启动 user-service java -jar user-service/target/user-service-1.0.0.jar # 再启动 gateway-service java -jar gateway-service/target/gateway-service-1.0.0.jar ``` ### 5. 验证接口 ```bash # 通过网关访问(推荐) curl http://localhost:8080/api/user/page curl http://localhost:8080/api/user/1 curl -X POST http://localhost:8080/api/user \ -H "Content-Type: application/json" \ -d '{"name":"Dave","email":"dave@demo.com","age":22}' # 直连 user-service(调试用) curl http://localhost:8081/user/page ``` ## API 说明 | 方法 | 路径(经网关) | 描述 | |--------|----------------------------|--------------------| | GET | /api/user/page | 分页查询(支持 name 模糊搜索)| | GET | /api/user/{id} | 按 ID 查询 | | POST | /api/user | 新增用户 | | PUT | /api/user/{id} | 更新用户 | | DELETE | /api/user/{id} | 逻辑删除用户 | ## 常见问题 **Q: Gateway 启动报 `spring-webmvc` 冲突?** > gateway-service 的 pom.xml 中严禁引入 `spring-boot-starter-web`。 **Q: 配置中心不生效?** > Nacos Config 必须在 `bootstrap.yml` 中配置,普通 `application.yml` 加载时机太晚。 **Q: lb:// 路由找不到服务?** > 确认 user-service 已在 Nacos 注册(控制台-服务列表),且 `spring.application.name` 与路由 `uri: lb://user-service` 中的名称一致。