10 KiB
10 KiB
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设计
@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 统一返回结果设计
@Data
public class Result<T> {
private Integer code;
private String message;
private T data;
private Long timestamp;
public static <T> Result<T> success(T data) {
// 成功返回
}
public static <T> Result<T> 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依赖
<properties>
<java.version>21</java.version>
<spring-boot.version>3.2.0</spring-boot.version>
<spring-ai.version>0.8.0</spring-ai.version>
<mybatis-plus.version>3.5.4</mybatis-plus.version>
<spring-security.version>6.1.0</spring-security.version>
<log4j2.version>2.20.0</log4j2.version>
<jwt.version>0.11.5</jwt.version>
</properties>
13.2 依赖版本管理
- 统一版本管理
- 依赖冲突解决
- 安全漏洞检查
13.3 核心依赖配置
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jwt.version}</version>
<scope>runtime</scope>
</dependency>
<!-- Log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
14. 开发工具配置
14.1 IDE配置
- IntelliJ IDEA推荐配置
- 代码格式化规则
- 代码检查规则
14.2 构建工具配置
- Maven配置优化
- 插件配置
- 构建脚本
15. 质量保证
15.1 代码质量
- SonarQube代码检查
- 代码规范检查
- 性能检查
15.2 测试质量
- 测试用例设计
- 测试数据管理
- 测试环境管理
总结
本技术方案提供了一个完整的SpringBoot单体后端服务架构,涵盖了从技术选型到部署运维的各个方面。方案注重:
- 技术先进性: 使用最新稳定版本的技术栈
- 架构合理性: 分层清晰,职责明确
- 可扩展性: 支持水平扩展和功能扩展
- 可维护性: 统一的代码规范和开发流程
- 高性能: 多级缓存和异步处理
- 高可用: 完善的监控和异常处理机制
该方案可以作为项目开发的技术指导文档,确保项目的技术实现符合最佳实践。