# CCDemo - Spring Boot 基础项目模板 基于 youfool-framework-springboot 3.3.1 的 Spring Boot 项目模板,集成常用功能和最佳实践。 ## 项目特性 - 🛡️ **安全防护**:集成 XSS 防护、SM3 加密、RSA 加密 - 🔐 **认证授权**:基于 Sa-Token 的权限管理 - 📊 **API 文档**:集成 Knife4j (Swagger) 接口文档 - 📈 **监控日志**:集成 Druid 数据源监控和 REST 日志记录 - 🚦 **限流控制**:内置漏桶算法限流器 - 🗄️ **数据源**:支持动态数据源切换 - 📁 **文件管理**:支持文件上传功能 ## 技术栈 - **框架**:Spring Boot 2.3.5 - **基础框架**:youfool-framework-springboot 3.3.1 - **数据库**:PostgreSQL / MySQL - **安全**:Sa-Token、RSA、SM3 - **工具**:Lombok、Junit - **文档**:Knife4j (Swagger) ## 项目结构 ``` src/main/java/io/lroyia/ccdemo/ ├── annotation/ # 自定义注解 │ └── RateLimit.java # 限流注解 ├── aspect/ # AOP 切面 │ └── RateLimiterAspect.java # 限流切面 ├── config/ # 配置类 │ ├── PrjDataSource.java # 数据源配置 │ ├── RateLimiterConfig.java # 限流器配置 │ ├── SpringMvcConfig.java # MVC 配置 │ └── SwaggerKnife4j.java # Swagger 配置 ├── controller/ # 控制器 │ └── LoginController.java # 登录相关接口 ├── common/ # 通用组件 │ ├── constants/ # 常量定义 │ └── util/ # 工具类 │ ├── StringUtils.java │ └── LeakyBucketRateLimiter.java # 漏桶限流器 ├── exception/ # 异常处理 │ └── RateLimitExceededException.java └── dev/ # 开发工具 ``` ## 核心功能 ### 1. 数据源管理 当前版本使用了`苞米豆`的[动态数据源](https://github.com/baomidou/dynamic-datasource-spring-boot-starter)。 **注意事项**:使用事务时需使用 `@DSTransactional` 代替 `@Transactional`。 ### 2. 限流控制 实现了基于漏桶算法的限流器,支持: - 桶容量配置 - 流出速率配置 - 自定义异常处理 - AOP 无侵入式集成 **使用方式**: ```java @RateLimit public RestResult doLogin(String username, String password, Boolean encrypt) { // 方法实现 } ``` **配置参数**: ```yaml rate: limiter: enabled: true # 是否启用限流 capacity: 100 # 桶容量 rate: 10 # 每秒处理数量 rate-interval: 1 # 时间间隔(秒) ``` ### 3. 认证授权 基于 Sa-Token 实现的认证授权系统: - Token 认证 - 权限管理 - 会话管理 - 登录状态控制 ### 4. 安全防护 - **XSS 防护**:过滤恶意脚本,保护应用安全 - **SM3 加密**:用户密码加密存储 - **RSA 加密**:敏感数据传输加密 - **CSP 策略**:内容安全策略配置 ### 5. API 文档 集成 Knife4j (Swagger) 提供在线 API 文档: - 自动生成接口文档 - 支持在线测试 - 权限控制访问 ## 配置说明 ### 主要配置项 ```yaml # 应用配置 spring: application: name: youfool-prj-springboot-template # 数据源配置 datasource: dynamic: primary: master datasource: master: # 主数据源配置 youfool: # 框架数据源配置 # 限流器配置 rate: limiter: enabled: true capacity: 100 rate: 10 rate-interval: 1 # Sa-Token 配置 sa-token: token-name: satoken timeout: 2592000 is-concurrent: true is-share: false token-style: uuid # 安全配置 security: xss: enabled: true validate-input: true sanitize-output: true ``` ## 开发指南 ### 启动项目 ```bash mvn spring-boot:run ``` ### 访问地址 - **应用首页**:http://localhost:8080/prj - **API 文档**:http://localhost:8080/prj/doc.html - **Druid 监控**:http://localhost:8080/prj/druid ### 代码规范 项目集成了 CheckStyle 代码风格检查: ```bash mvn checkstyle:check ``` ### 构建部署 ```bash # 编译打包 mvn clean package # 跳过测试打包 mvn clean package -DskipTests ``` ## 注意事项 1. **事务管理**:使用 `@DSTransactional` 而非 `@Transactional` 2. **安全配置**:生产环境请修改默认密码和密钥 3. **限流配置**:根据业务需求调整限流参数 4. **数据源**:确保数据库连接配置正确 5. **权限管理**:根据实际业务配置用户权限 ## 许可证 本项目遵循 Apache License 2.0 开源协议。