# codemine **Repository Path**: foocus/codemine ## Basic Information - **Project Name**: codemine - **Description**: SpringBoot项目,支持多数据源切换,Swagger,日志切面,JWT权限校验,Redis,Log4j2.... - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-07-13 - **Last Updated**: 2025-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, SpringBoot, Redis, Swagger, SPI ## README # CodeMine Starter 项目说明文档 ## 项目简介 CodeMine Starter 是一个基于 Spring Boot 的基础开发框架,集成了多种常用功能模块,包括多数据源切换、日志记录、接口耗时监控、用户认证、Redis 操作、线程池管理等,适用于快速搭建企业级 Java 应用。 该项目采用模块化设计,便于扩展和维护,适用于中大型后端服务开发。 ## 功能特性 - **多数据源支持**:通过 `@SwitchDB` 注解实现不同数据库(如 Oracle、MySQL、Import)的动态切换。 - **日志记录**:通过 `@LogWrite` 注解实现接口调用日志的自动记录。 - **接口耗时监控**:使用 AOP 实现接口执行时间的统计。 - **用户认证与 Token 管理**:基于 JWT 实现用户登录、Token 生成与刷新。 - **Redis 操作封装**:提供通用的 Redis 操作工具类 `RedisWrapper`。 - **全局异常处理**:统一处理异常并返回标准格式的响应。 - **OpenAPI 集成**:支持 Swagger UI 接口文档展示。 - **线程池管理**:提供可配置的线程池工具类。 - **SPI 扩展机制**:支持通过 SPI 实现数据源的扩展。 ## 模块说明 - **用户模块**:实现用户注册、登录、注销、Token 管理等功能。 - **角色模块**:实现角色的增删查功能。 - **日志模块**:记录接口调用日志,支持按 ID 查询。 - **数据源模块**:支持多数据源动态切换,集成 MySQL、Oracle、MongoDB 等 SPI 实现。 - **工具类模块**:包含日期处理、MD5 加密、UUID 生成、版本管理等常用工具。 ## 快速开始 ### 环境要求 - JDK 1.8 或以上 - Maven 3.x - MySQL / Oracle / MongoDB(根据需求配置) - Redis(用于 Token 管理和缓存) ### 构建与运行 1. 克隆项目: ```bash git clone https://gitee.com/foucsOnit/codemine.git ``` 2. 修改配置文件: ```yaml # application.yml spring: datasource: url: jdbc:mysql://localhost:3306/codemine?useSSL=false&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver ``` 3. 构建项目: ```bash mvn clean install ``` 4. 启动项目: ```bash mvn spring-boot:run ``` 5. 访问接口文档: ``` http://localhost:8080/swagger-ui.html ``` ## 使用示例 ### 多数据源切换 ```java @SwitchDB("mysql") public BasTaskLog getLogWrapper3Service(String id) { // 该方法将使用 MySQL 数据源执行 } ``` ### 日志记录 ```java @LogWrite("新增接口日志") @PostMapping("/add/logWrapper") public ResponseWrapper addLogWrapper(@RequestBody LogRecord record) { // 该接口调用将自动记录日志 } ``` ### 用户登录与 Token 管理 ```java @PostMapping("/userLogin") public ResponseWrapper loginUser(@RequestBody LoginUser user) { LoginUser loginUser = userService.loginUser(user); String token = JWToken.generateJwtToken(loginUser); loginUser.setToken(token); return ResponseWrapper.Success(loginUser); } ``` ## 贡献指南 欢迎提交 Issue 和 Pull Request。请遵循以下规范: - 提交代码前请确保通过测试 - 保持代码风格统一 - 添加必要的注释和文档说明 ## 许可证 本项目采用 MIT 许可证。详情请查看 LICENSE 文件。