# SpringBoot单体后端服务技术方案 ## 1. 技术选型 ### 1.1 核心框架 - **Spring Boot**: 3.2.0 (最新稳定版本) - **Java版本**: JDK 21 (LTS版本) - **Spring AI**: 0.8.0 (最新稳定版本) - **WebSocket**: Spring WebSocket 6.1.0 ### 1.2 数据存储 - **数据库**: MySQL 8.0+ - **缓存**: Redis 7.0+ - **ORM框架**: MyBatis-Plus 3.5.4 (最新稳定版本) ### 1.3 其他组件 - **连接池**: HikariCP (Spring Boot默认) - **JSON处理**: Jackson - **API文档**: SpringDoc OpenAPI 3 - **安全框架**: Spring Security 6.1.0 - **日志**: Log4j2 + SLF4J - **测试**: JUnit 5 + Mockito ## 2. 项目架构设计 ### 2.1 分层架构 ``` src/main/java/com/emotionmuseum/ ├── config/ # 配置类 ├── controller/ # 控制器层(只负责接收请求、参数校验、调用Service、返回结果) ├── service/ # 服务层(所有业务逻辑都在这里实现) │ ├── impl/ # 服务实现 ├── mapper/ # 数据访问层 ├── entity/ # 实体类 ├── dto/ # 数据传输对象 │ ├── request/ # 请求对象 │ ├── response/ # 响应对象 ├── common/ # 公共组件 │ ├── base/ # 基础类 │ ├── exception/ # 异常处理 │ ├── result/ # 统一返回结果 │ ├── util/ # 工具类 ├── websocket/ # WebSocket相关 └── EmotionMuseumApplication.java ``` ### 2.2 分层职责规范 - **Controller层**: 只负责接收HTTP请求、参数校验、调用Service层方法、返回HTTP响应 - **Service层**: 负责所有业务逻辑,包括数据校验、业务规则判断、数据处理、事务管理 - **Mapper层**: 只负责数据库操作,不包含业务逻辑 - **Entity层**: 数据库实体类,对应数据库表结构 - **DTO层**: 数据传输对象,用于前后端数据交互 ### 2.3 包结构规范 - 按功能模块分包 - 每个模块包含完整的MVC层次 - 公共组件独立包管理 ## 3. 核心配置设计 ### 3.1 多环境配置 - `application.yml` - 主配置文件 - `application-dev.yml` - 开发环境 - `application-test.yml` - 测试环境 - `application-prod.yml` - 生产环境 ### 3.2 异步配置 - 使用`@EnableAsync`启用异步 - 配置自定义线程池 - 支持异步方法调用 ### 3.3 数据库配置 - 主从分离支持 - 连接池优化配置 - 事务管理配置 ## 4. 代码规范 ### 4.1 命名规范 - **类名**: 大驼峰命名法 (PascalCase) - **方法名**: 小驼峰命名法 (camelCase) - **常量**: 全大写+下划线 (UPPER_SNAKE_CASE) - **包名**: 全小写+点分隔 (com.emotionmuseum) ### 4.2 注解规范 - 控制器类使用`@RestController` - 服务类使用`@Service` - 数据访问类使用`@Mapper` - 异步方法使用`@Async` ### 4.3 异常处理规范 - 统一使用全局异常处理器 - 自定义业务异常类 - 异常信息国际化支持 ## 5. 核心组件设计 ### 5.1 BaseEntity设计 ```java @MappedSuperclass @Data public abstract class BaseEntity { @TableId(type = IdType.ASSIGN_ID) private Long id; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @TableField(fill = FieldFill.INSERT) private String createBy; @TableField(fill = FieldFill.INSERT_UPDATE) private String updateBy; @TableLogic private Integer deleted; } ``` ### 5.2 统一返回结果设计 ```java @Data public class Result { private Integer code; private String message; private T data; private Long timestamp; public static Result success(T data) { // 成功返回 } public static Result error(String message) { // 错误返回 } } ``` ### 5.3 请求响应封装 - 所有Controller入参使用Request对象封装 - 所有Controller出参使用Response对象封装 - 统一使用Result包装返回结果 ### 5.4 分层职责严格规范 **重要原则:严格遵循分层架构,各层职责明确,禁止跨层调用。** - **Controller层职责**: - 接收HTTP请求 - 参数校验(使用@Valid注解) - 调用Service层方法 - 返回HTTP响应 - **严禁在Controller层编写任何业务逻辑代码** - **Service层职责**: - 所有业务逻辑实现 - 数据校验和业务规则判断 - 数据处理和转换 - 事务管理 - 调用Mapper层进行数据操作 - 异常处理和日志记录 - **Mapper层职责**: - 数据库CRUD操作 - SQL语句编写 - 数据查询和映射 - **严禁在Mapper层编写业务逻辑** ## 6. Spring AI + Coze集成方案 ### 6.1 Coze平台集成 - 使用Spring AI的ChatClient接口 - 配置Coze API密钥和端点 - 实现自定义ChatClient适配器 ### 6.2 WebSocket实时通信 - 使用STOMP协议 - 支持一对一和广播消息 - 实现消息持久化 ### 6.3 对话管理 - 对话历史记录存储 - 上下文管理 - 用户会话隔离 ## 7. 缓存策略 ### 7.1 Redis缓存设计 - 用户会话缓存 - 对话历史缓存 - 热点数据缓存 - 分布式锁实现 ### 7.2 缓存更新策略 - 写入时更新 - 定时刷新 - 失效策略 ## 8. 安全设计 ### 8.1 Spring Security认证授权 - **JWT Token认证**: 基于JWT的无状态认证机制 - **角色权限控制**: 基于RBAC的权限模型 - **API访问控制**: 细粒度的接口权限控制 - **密码加密**: 使用BCrypt加密算法 - **会话管理**: 支持无状态和有状态会话 - **CSRF防护**: 跨站请求伪造防护 - **CORS配置**: 跨域资源共享配置 ### 8.2 安全组件设计 - **SecurityConfig**: Spring Security主配置类 - **JwtAuthenticationFilter**: JWT认证过滤器 - **JwtTokenProvider**: JWT令牌提供者 - **UserDetailsService**: 用户详情服务 - **AuthenticationEntryPoint**: 认证失败处理 - **AccessDeniedHandler**: 访问拒绝处理 ### 8.3 数据安全 - 敏感数据加密 - SQL注入防护 - XSS防护 - 输入验证和过滤 ## 9. 性能优化 ### 9.1 数据库优化 - 索引优化 - 查询优化 - 分页查询 ### 9.2 缓存优化 - 多级缓存 - 缓存预热 - 缓存穿透防护 ### 9.3 异步处理 - 消息队列 - 异步任务 - 批量处理 ## 10. 监控和日志 ### 10.1 应用监控 - 健康检查 - 性能监控 - 业务监控 ### 10.2 Log4j2日志管理 - **日志框架**: Log4j2 + SLF4J - **日志级别**: TRACE, DEBUG, INFO, WARN, ERROR, FATAL - **日志输出**: 控制台、文件、数据库、远程服务器 - **日志格式**: JSON格式结构化日志 - **日志轮转**: 按大小和时间自动轮转 - **日志过滤**: 基于MDC的日志过滤 - **性能优化**: 异步日志记录 - **日志聚合**: ELK Stack集成支持 ### 10.3 日志配置策略 - **开发环境**: 控制台输出,DEBUG级别 - **测试环境**: 文件输出,INFO级别 - **生产环境**: 文件+远程输出,WARN级别 - **安全日志**: 独立的审计日志文件 - **业务日志**: 按模块分离的日志文件 ## 11. 部署方案 ### 11.1 容器化部署 - Docker镜像构建 - Docker Compose编排 - 环境变量配置 ### 11.2 CI/CD流程 - 自动化构建 - 自动化测试 - 自动化部署 ## 12. 开发规范 ### 12.1 代码提交规范 - 使用Conventional Commits - 分支管理策略 - 代码审查流程 ### 12.2 测试规范 - 单元测试覆盖率 > 80% - 集成测试 - 端到端测试 ### 12.3 文档规范 - API文档自动生成 - 代码注释规范 - 技术文档维护 ## 13. 项目依赖管理 ### 13.1 Maven依赖 ```xml 21 3.2.0 0.8.0 3.5.4 6.1.0 2.20.0 0.11.5 ``` ### 13.2 依赖版本管理 - 统一版本管理 - 依赖冲突解决 - 安全漏洞检查 ### 13.3 核心依赖配置 ```xml org.springframework.boot spring-boot-starter-security io.jsonwebtoken jjwt-api ${jwt.version} io.jsonwebtoken jjwt-impl ${jwt.version} runtime io.jsonwebtoken jjwt-jackson ${jwt.version} runtime org.springframework.boot spring-boot-starter-log4j2 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging ``` ## 14. 开发工具配置 ### 14.1 IDE配置 - IntelliJ IDEA推荐配置 - 代码格式化规则 - 代码检查规则 ### 14.2 构建工具配置 - Maven配置优化 - 插件配置 - 构建脚本 ## 15. 质量保证 ### 15.1 代码质量 - SonarQube代码检查 - 代码规范检查 - 性能检查 ### 15.2 测试质量 - 测试用例设计 - 测试数据管理 - 测试环境管理 --- ## 总结 本技术方案提供了一个完整的SpringBoot单体后端服务架构,涵盖了从技术选型到部署运维的各个方面。方案注重: 1. **技术先进性**: 使用最新稳定版本的技术栈 2. **架构合理性**: 分层清晰,职责明确 3. **可扩展性**: 支持水平扩展和功能扩展 4. **可维护性**: 统一的代码规范和开发流程 5. **高性能**: 多级缓存和异步处理 6. **高可用**: 完善的监控和异常处理机制 该方案可以作为项目开发的技术指导文档,确保项目的技术实现符合最佳实践。