# my-test-project **Repository Path**: dabean/my-test-project ## Basic Information - **Project Name**: my-test-project - **Description**: No description available - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot 中间件整合学习项目 > 企业级 Spring Boot 中间件集成示例项目,包含 Redis、PostgreSQL、MyBatis Plus 等主流技术栈的完整整合方案。 --- ## 📋 项目简介 本项目是一个综合性的 Spring Boot 中间件整合学习项目,旨在帮助开发者快速掌握 Spring Boot 与各种中间件的集成方式。项目采用企业级标准架构设计,代码规范、文档齐全,适合: - **学习用途**:快速上手 Spring Boot 整合 Redis、PostgreSQL - **接口测试**:日常开发中的接口调试和验证 - **项目模板**:作为企业级后端服务的基础模板 --- ## 🛠️ 技术栈 | 分类 | 技术 | 版本 | 说明 | | :--- | :--- | :--- | :--- | | 语言 | Java | 17 | LTS 版本,性能稳定 | | 框架 | Spring Boot | 3.5.14 | 社区成熟,生态完善 | | 数据库 | PostgreSQL | 42.7.7 | 企业级开源数据库 | | ORM | MyBatis Plus | 3.5.16 | 增强型 MyBatis,简化开发 | | 缓存 | Redis | Lettuce | Spring Boot 默认客户端 | | 连接池 | Druid | 1.1.18 | 阿里巴巴开源连接池 | | API文档 | SpringDoc OpenAPI | 2.8.14 | Swagger 3.x 标准 | | 代码简化 | Lombok | 1.18.x | 减少样板代码 | --- ## 📁 项目结构 ``` my-test-project/ ├── src/ │ └── main/ │ ├── java/com/example/mytestproject/ │ │ ├── config/ # 配置类(Redis、MyBatis、Swagger、CORS) │ │ ├── controller/ # REST API 控制器 │ │ ├── service/ # 业务逻辑层 │ │ │ └── impl/ # 服务实现类 │ │ ├── mapper/ # 数据访问层(MyBatis Plus) │ │ ├── entity/ # 数据库实体类 │ │ ├── dto/ # 数据传输对象 │ │ ├── exception/ # 异常处理 │ │ ├── utils/ # 工具类 │ │ └── MyTestProjectApplication.java # 启动类 │ └── resources/ │ ├── mapper/ # MyBatis XML 映射文件 │ ├── application.yml # 主配置文件 │ ├── application-dev.yml # 开发环境配置 │ ├── application-test.yml # 测试环境配置 │ ├── application-prod.yml # 生产环境配置 │ └── logback-spring.xml # 日志配置 ├── doc/ # 技术文档目录 ├── pom.xml # Maven 依赖管理 └── LICENSE # 许可证 ``` **模块职责说明**: | 模块 | 职责 | 主要文件 | | :--- | :--- | :--- | | `config` | 第三方组件配置 | `RedisConfig.java`、`MybatisPlusConfig.java`、`SwaggerConfig.java` | | `controller` | REST API 控制层 | `PgTestController.java`(PostgreSQL)、`RedisTestController.java`(Redis) | | `service` | 业务逻辑层 | `UserService.java`、`RedisService.java` | | `mapper` | 数据访问层 | `UserMapper.java`(MyBatis Plus) | | `entity` | 数据库实体 | `User.java` | | `dto` | 请求/响应对象 | `UserCreateDTO.java`、`UserResponseDTO.java` 等 | | `exception` | 统一异常处理 | `GlobalExceptionHandler.java`、`BusinessException.java` | | `utils` | 工具类 | `RedisUtil.java`(Redis 操作封装) | --- ## 🚀 快速开始 ### 环境要求 - **JDK**:17 或更高版本 - **Maven**:3.8+ - **PostgreSQL**:14+(或使用 Docker) - **Redis**:6.2+(或使用 Docker) ### 1. 环境配置 #### 方式一:使用 Docker 启动中间件(推荐) ```bash # 启动 Redis(端口 6379) docker run -d --name redis -p 6379:6379 redis:6.2 # 启动 PostgreSQL(端口 5432) docker run -d --name postgres \ -p 5432:5432 \ -e POSTGRES_USER=admin \ -e POSTGRES_PASSWORD=123456 \ -e POSTGRES_DB=example_db \ postgres:14 ``` #### 方式二:本地安装 确保本地已安装 Redis 和 PostgreSQL,并创建数据库: ```sql -- 创建数据库 CREATE DATABASE example_db; -- 创建用户表(首次运行前执行) CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, deleted INT DEFAULT 0 ); ``` ### 2. 修改配置文件 根据您的环境修改 `application-dev.yml`: ```yaml spring: datasource: url: jdbc:postgresql://localhost:5432/example_db username: admin password: 123456 data: redis: host: localhost port: 6379 ``` ### 3. 启动项目 ```bash # 进入项目目录 cd my-test-project # Maven 构建 mvn clean package -DskipTests # 运行项目 mvn spring-boot:run ``` ### 4. 访问服务 服务启动后,访问以下地址: | 地址 | 说明 | | :--- | :--- | | `http://localhost:8099/api/pg/health` | PostgreSQL 健康检查 | | `http://localhost:8099/redis/string/set?key=test&value=hello` | Redis 测试 | | `http://localhost:8099/swagger-ui.html` | Swagger API 文档 | --- ## 🔌 API 接口文档 ### PostgreSQL 接口(用户管理) | API 路径 | HTTP 方法 | 功能描述 | | :--- | :--- | :--- | | `/api/pg/user` | POST | 创建新用户 | | `/api/pg/user/{id}` | GET | 根据 ID 查询用户 | | `/api/pg/user/{id}` | PUT | 更新用户信息 | | `/api/pg/user/{id}` | DELETE | 删除用户(逻辑删除) | | `/api/pg/user/email?email=xxx` | GET | 根据邮箱查询用户 | | `/api/pg/users?page=0&size=10` | GET | 分页查询用户列表 | | `/api/pg/users/search?keyword=xxx` | GET | 用户名模糊搜索 | | `/api/pg/users/age-range?minAge=18&maxAge=30` | GET | 根据年龄范围查询 | | `/api/pg/users/batch` | DELETE | 批量删除用户 | | `/api/pg/health` | GET | 健康检查 | **创建用户示例**: ```bash curl -X POST http://localhost:8099/api/pg/user \ -H "Content-Type: application/json" \ -d '{"username": "张三", "email": "zhangsan@example.com", "age": 25}' ``` ### Redis 接口 | API 路径 | HTTP 方法 | 功能描述 | | :--- | :--- | :--- | | `/redis/user` | POST | 保存用户对象到 Redis | | `/redis/user?name=xxx` | GET | 根据姓名获取用户对象 | | `/redis/user?name=xxx` | DELETE | 删除用户对象 | | `/redis/string/set?key=xxx&value=xxx` | GET | 存储普通字符串 | | `/redis/string/get?key=xxx` | GET | 获取普通字符串 | | `/redis/string/incr?key=xxx&delta=1` | GET | 原子自增(计数器) | | `/redis/hash/set?key=xxx&field=xxx&value=xxx` | GET | Hash 设置字段 | | `/redis/hash/get?key=xxx&field=xxx` | GET | Hash 获取字段 | **存储字符串示例**: ```bash # 存储带过期时间的字符串(30秒) curl "http://localhost:8099/redis/string/set?key=hello&value=world&ttl=30" # 获取字符串 curl "http://localhost:8099/redis/string/get?key=hello" ``` --- ## ⚙️ 配置说明 ### 多环境配置 项目支持三种环境配置: | 环境 | 配置文件 | 激活方式 | | :--- | :--- | :--- | | 开发环境 | `application-dev.yml` | 默认(启动参数可省略) | | 测试环境 | `application-test.yml` | `--spring.profiles.active=test` | | 生产环境 | `application-prod.yml` | `--spring.profiles.active=prod` | ### 日志配置 日志配置文件为 `logback-spring.xml`,支持: - 控制台输出(彩色) - 文件滚动存储 - 按级别过滤 ### Swagger 文档 启动项目后访问 `http://localhost:8099/swagger-ui.html` 查看交互式 API 文档。 --- ## 📝 使用场景 ### 学习场景 1. **Redis 学习**:通过 `RedisTestController` 学习 Redis 各种数据结构操作 2. **PostgreSQL 学习**:通过 `PgTestController` 学习数据库 CRUD 操作 3. **MyBatis Plus 学习**:查看 `UserMapper` 和 `UserServiceImpl` 了解 MP 使用方式 ### 测试场景 ```bash # 测试 Redis 连接 curl "http://localhost:8099/redis/string/set?key=test&value=success" # 测试数据库连接 curl http://localhost:8099/api/pg/health ``` --- ## 🏛️ 架构设计 ### 设计原则 1. **分层架构**:Controller → Service → Mapper → Database 2. **依赖注入**:使用 Spring 的 @Autowired / @RequiredArgsConstructor 3. **DTO 模式**:使用 DTO 隔离实体与外部接口 4. **统一异常处理**:`GlobalExceptionHandler` 统一处理异常 5. **RESTful 风格**:统一的 API 设计规范 ### 核心流程图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 请求流程 │ ├─────────────────────────────────────────────────────────────┤ │ Client │ Controller │ Service │ Mapper │ Database │ │ │ │ │ │ │ │ │ │ │ │ │ │────>│ │ │ │ │ │ │ │ │ │ │ │ 参数校验 │ │ │ │ │ │ │ │ │ │ │───────>│ │ │ │ │ │ │ │ │ │ │ │ 业务逻辑 │ │ │ │ │ │ │ │ │ │ │──────>│ │ │ │ │ │ │ │ │ │ │ │ SQL执行 │ │ │ │ │ │ │ │ │ │ │────>│ │ │ │ │ │ │ │ │ │ │ │ 数据库操作 │ │ │ │ │ │ │ │ │<────│ │ │ │ │ │ │ │ │<──────│ │ │ │ │ │ │ │ │<───────│ │ │ │ │ │ │ │ │<────│ │ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 📚 扩展阅读 项目 `doc/` 目录包含以下技术文档: | 文档 | 说明 | | :--- | :--- | | `Spring Boot 企业级集成 PostgreSQL 完整指南.md` | PostgreSQL 集成详解 | | `Spring Boot + MyBatis Plus + PostgreSQL 企业级整合方案.md` | ORM 框架整合方案 | | `HikariCP vs Druid 企业级连接池配置方案对比.md` | 连接池选型参考 | | `Spring Boot 配置文件外部化与多环境管理实战指南.md` | 配置管理最佳实践 | --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本项目 2. 创建特性分支:`git checkout -b feature/xxx` 3. 提交更改:`git commit -m '添加 xxx 功能'` 4. 推送到分支:`git push origin feature/xxx` 5. 提交 Pull Request --- ## 📄 许可证 本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 --- ## 📞 联系方式 如有问题或建议,欢迎通过 Issue 反馈。 --- *项目版本:0.0.1-SNAPSHOT* *最后更新:2026年*