diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000000000000000000000000000000000000..559d3d9f310153ac044fa47f8d344b3eb39f526c --- /dev/null +++ b/README.en.md @@ -0,0 +1,130 @@ + + +# SpringBoot Sample Project + +This project demonstrates how to build a backend application using Spring Boot, showcasing various features including Redis caching operations, asynchronous task processing, file chunk upload, log testing, HTTP client utility usage, and thread pool configuration. + +## Project Structure + +- `spring-redis`: Redis integration example, including Redis configuration, utility classes, and performance testing. +- `spring-tomcat-undertow`: Main project, containing web-related functionalities such as AOP, asynchronous tasks, HTTP client utilities, MinIO file upload, log testing, etc. + +## Functional Modules + +### Redis Related Features + +- **Redis Configuration** + - `spring-redis/src/main/java/com/my/springredis/config/RedisConfig.java`: Configures Redis connection factory and RedisTemplate. +- **Redis Utility Class** + - `spring-redis/src/main/java/com/my/springredis/util/RedisUtil.java`: Provides rich Redis operation methods, including key operations, strings, hashes, sets, lists, etc. +- **Redis Performance Testing** + - `spring-redis/src/test/java/com/my/springredis/RedisPerformanceTest.java`: Used to test Redis performance. + +### Asynchronous Task Processing + +- **Custom AOP Annotation** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/aop/AsyncTask.java`: Used to mark methods as asynchronous tasks. +- **Task Aspect** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/aop/TaskAspect.java`: Uses AOP to intercept methods annotated with `@AsyncTask`, records execution time, and saves task status to Redis. +- **Task Service** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/service/TaskService.java`: Defines the task interface. + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/service/impl/TaskServiceImpl.java`: Implements the task interface and realizes asynchronous processing with `@AsyncTask`. +- **Task Controller** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/TaskController.java`: Provides REST APIs to start and query asynchronous task status. + +### File Chunk Upload + +- **Chunk Upload Controller** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/ChunkUploadController.java`: Implements functions such as initialization of chunk upload, uploading individual chunks, merging chunks, and checking uploaded chunks. + +### MinIO File Upload + +- **MinIO Configuration** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/minio/MinioConfig.java`: Configures the MinIO client. +- **MinIO Service** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/minio/MinioService.java`: Provides file upload services. +- **MinIO Controller** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/MinioController.java`: Provides REST APIs for file upload. + +### Log Testing + +- **Log Test Class** + - `spring-tomcat-undertow/src/test/java/com/my/tomcatundertow/LogTest.java`: Used to test Spring Boot's log rolling strategy and log levels. + +### HTTP Client Utility + +- **HTTP Utility Class** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/util/HttpClientUtils.java`: Provides HTTP client utility methods. +- **HTTP Test Class** + - `spring-tomcat-undertow/src/test/java/com/my/tomcatundertow/HttpClientTest.java`: Tests HTTP request behaviors under different timeout settings. + +### Web Features + +- **Web Asynchronous Support** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/config/SpringmvcConfig.java`: Configures asynchronous support for Spring MVC. +- **Hello Controller** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/HelloController.java`: Provides a simple REST API to demonstrate synchronous and asynchronous request handling. + +### Configuration Files + +- `spring-redis/src/main/resources/application.yml`: Configuration file for the Redis example. +- `spring-tomcat-undertow/src/main/resources/application.yml`: Configuration file for the main project. + +## Technology Stack + +- Spring Boot +- Redis (using Lettuce client) +- MinIO +- AOP +- Asynchronous task processing +- HTTP client utilities +- Log testing (Logback) +- Chunk upload +- Custom thread pools + +## Usage Instructions + +### Starting the Project + +```bash +# Navigate to the project directory +cd spring-tomcat-undertow + +# Start the Spring Boot project using Maven +mvn spring-boot:run +``` + +### Testing Features + +- **Redis Related Testing**: + - Run the `spring-redis` project and use `RedisUtil` to test Redis operations. + - Run `spring-redis/src/test/java/com/my/springredis/RedisPerformanceTest.java` for performance testing. + +- **Asynchronous Task Testing**: + - Use the `/api/task/start` API to start an asynchronous task. + - Use the `/api/task/query` API to query task status. + +- **File Chunk Upload Testing**: + - Use `/upload/init` API to initialize the upload. + - Use `/upload/chunk` API to upload chunks. + - Use `/upload/merge` API to merge chunks. + +- **MinIO File Upload Testing**: + - Use `/minio/upload` API to upload files to MinIO. + +- **Log Testing**: + - Run `LogTest.java` to test the log rolling strategy and log levels. + +- **HTTP Client Testing**: + - Run `HttpClientTest.java` to test HTTP timeout mechanisms. + +## Notes + +- Ensure Redis and MinIO services are running and relevant information is correctly configured in `application.yml`. +- The file upload functionality requires configuration of temporary and final storage directories. +- Asynchronous task status is managed through Redis; ensure Redis is available. +- Log testing depends on configurations in `logback-spring.xml`. + +## License + +This project is licensed under the [MIT License](LICENSE). \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..616952175b77509bf69816c89328a2bf9a36e119 --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ + + +# SpringBoot 示例项目 + +本项目展示了如何使用 Spring Boot 构建后端应用,并演示了多种功能,包括 Redis 缓存操作、异步任务处理、文件分片上传、日志测试、HTTP 客户端工具使用、线程池配置等。 + +## 项目结构 + +- `spring-redis`: Redis 集成示例,包含 Redis 的配置、工具类和性能测试。 +- `spring-tomcat-undertow`: 主项目,包含 Web 相关功能,如 AOP、异步任务、HTTP 客户端工具、MinIO 文件上传、日志测试等。 + +## 功能模块 + +### Redis 相关功能 + +- **Redis 配置** + - `spring-redis/src/main/java/com/my/springredis/config/RedisConfig.java` 配置 Redis 连接工厂和 RedisTemplate。 +- **Redis 工具类** + - `spring-redis/src/main/java/com/my/springredis/util/RedisUtil.java` 提供了丰富的 Redis 操作方法,包括 key 操作、字符串、哈希、集合、列表等。 +- **Redis 性能测试** + - `spring-redis/src/test/java/com/my/springredis/RedisPerformanceTest.java` 用于测试 Redis 的性能。 + +### 异步任务处理 + +- **自定义 AOP 注解** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/aop/AsyncTask.java` 用于标记异步任务的方法。 +- **任务切面** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/aop/TaskAspect.java` 使用 AOP 拦截 `@AsyncTask` 注解的方法,记录执行时间并保存任务状态到 Redis。 +- **任务服务** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/service/TaskService.java` 定义任务接口。 + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/service/impl/TaskServiceImpl.java` 实现任务接口,并结合 `@AsyncTask` 实现异步处理。 +- **任务控制器** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/TaskController.java` 提供 REST 接口启动和查询异步任务状态。 + +### 文件分片上传 + +- **分片上传控制器** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/ChunkUploadController.java` 实现文件分片上传的初始化、上传分片、合并分片、检查已上传分片等功能。 + +### MinIO 文件上传 + +- **MinIO 配置** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/minio/MinioConfig.java` 配置 MinIO 客户端。 +- **MinIO 服务** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/minio/MinioService.java` 提供文件上传服务。 +- **MinIO 控制器** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/MinioController.java` 提供上传文件的 REST 接口。 + +### 日志测试 + +- **日志测试类** + - `spring-tomcat-undertow/src/test/java/com/my/tomcatundertow/LogTest.java` 用于测试 Spring Boot 的日志滚动策略和日志级别。 + +### HTTP 客户端工具 + +- **HTTP 工具类** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/util/HttpClientUtils.java` 提供 HTTP 客户端工具方法。 +- **HTTP 测试类** + - `spring-tomcat-undertow/src/test/java/com/my/tomcatundertow/HttpClientTest.java` 测试不同超时设置下的 HTTP 请求行为。 + +### Web 功能 + +- **Web 异步支持** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/config/SpringmvcConfig.java` 配置 Spring MVC 的异步支持。 +- **Hello 控制器** + - `spring-tomcat-undertow/src/main/java/com/my/tomcatundertow/controller/HelloController.java` 提供简单的 REST 接口,演示同步和异步请求处理。 + +### 配置文件 + +- `spring-redis/src/main/resources/application.yml`:Redis 示例的配置文件。 +- `spring-tomcat-undertow/src/main/resources/application.yml`:主项目的配置文件。 + +## 技术栈 + +- Spring Boot +- Redis(使用 Lettuce 客户端) +- MinIO +- AOP +- 异步任务处理 +- HTTP 客户端工具 +- 日志测试(Logback) +- 分片上传 +- 自定义线程池 + +## 使用说明 + +### 启动项目 + +```bash +# 进入项目目录 +cd spring-tomcat-undertow + +# 使用 Maven 启动 Spring Boot 项目 +mvn spring-boot:run +``` + +### 测试功能 + +- **Redis 相关测试**: + - 启动 `spring-redis` 项目,使用 `RedisUtil` 测试 Redis 操作。 + - 运行 `spring-redis/src/test/java/com/my/springredis/RedisPerformanceTest.java` 进行性能测试。 + +- **异步任务测试**: + - 使用 `/api/task/start` 接口启动异步任务。 + - 使用 `/api/task/query` 接口查询任务状态。 + +- **文件分片上传测试**: + - 使用 `/upload/init` 接口初始化上传。 + - 使用 `/upload/chunk` 上传分片。 + - 使用 `/upload/merge` 合并分片。 + +- **MinIO 文件上传测试**: + - 使用 `/minio/upload` 接口上传文件到 MinIO。 + +- **日志测试**: + - 运行 `LogTest.java` 测试日志滚动策略和日志级别。 + +- **HTTP 客户端测试**: + - 运行 `HttpClientTest.java` 测试 HTTP 超时机制。 + +## 注意事项 + +- 确保 Redis、MinIO 服务已启动,并在 `application.yml` 中正确配置相关信息。 +- 文件上传功能需要配置临时目录和最终存储目录。 +- 异步任务状态通过 Redis 管理,需确保 Redis 可用。 +- 日志测试依赖 `logback-spring.xml` 中的配置。 + +## 协议 + +该项目遵循 [MIT License](LICENSE) 协议。 \ No newline at end of file