ccdemo/README.md

194 lines
4.5 KiB
Markdown
Raw Normal View History

# CCDemo - Spring Boot 基础项目模板
2025-09-20 09:51:42 +08:00
基于 youfool-framework-springboot 3.3.1 的 Spring Boot 项目模板,集成常用功能和最佳实践。
2025-09-20 09:51:42 +08:00
## 项目特性
2025-09-20 09:51:42 +08:00
- 🛡️ **安全防护**:集成 XSS 防护、SM3 加密、RSA 加密
- 🔐 **认证授权**:基于 Sa-Token 的权限管理
- 📊 **API 文档**:集成 Knife4j (Swagger) 接口文档
- 📈 **监控日志**:集成 Druid 数据源监控和 REST 日志记录
- 🚦 **限流控制**:内置漏桶算法限流器
- 🗄️ **数据源**:支持动态数据源切换
- 📁 **文件管理**:支持文件上传功能
2025-09-20 09:51:42 +08:00
## 技术栈
- **框架**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 开源协议。