技术选型
2025/12/3大约 8 分钟
技术选型
1. 项目概述
邮院通是一个基于单体架构的高校信息化管理平台,包含用户管理、课程管理、宿舍管理、社团管理、信息通知、智能助手等多个核心功能模块,旨在为学校提供全面的信息化解决方案。
2. 核心技术栈
2.1 开发语言
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Java | 19 | 所有模块 | 跨平台、高性能、面向对象,拥有成熟的生态系统和丰富的框架支持,适合企业级应用开发。 |
2.2 框架
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Spring Boot | 3.2.4 | 所有模块 | 简化Spring应用开发,内嵌Tomcat服务器,提供自动配置功能,大幅提高开发效率。 |
| Spring Security | - | gupt-auth | 提供完整的认证授权框架,支持JWT认证,确保系统安全性。 |
| MyBatis-Plus | 3.5.6 | 所有涉及数据库操作的模块 | 基于MyBatis的增强工具,简化CRUD操作,提供代码生成、分页等功能,提高开发效率。 |
2.3 数据库
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| MySQL | 8.0.33 | 所有模块 | 成熟稳定的关系型数据库,支持事务、外键约束,适合管理系统的复杂数据关系。 |
2.4 中间件
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Redis | - | gupt-common (RedisCacheHelper) | 高性能的内存数据库,用于缓存热点数据和管理Session/Token,提升系统响应速度。 |
| RabbitMQ | - | gupt-config (RabbitConfig) gupt-email-service (邮件发送) | 可靠的消息队列,用于异步处理邮件发送等任务,提高系统吞吐量。 |
| Elasticsearch | 8.12.2 | gupt-thirdpart-service (elasticsearch) gupt-assistant-service (搜索功能) | 高性能的分布式搜索引擎,用于全文检索和日志分析,提升信息查询效率。 |
2.5 认证授权
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| JWT (JSON Web Token) | 4.4.0 | gupt-auth | 无状态认证,便于水平扩展,适合分布式系统的身份验证。 |
| BCryptPasswordEncoder | - | gupt-auth | 安全的密码加密算法,提供哈希加盐功能,保护用户密码安全。 |
2.6 第三方服务集成
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Aliyun OSS | 3.17.4 | gupt-thirdpart-service (oss) | 阿里云对象存储服务,用于存储图片、文档等文件资源,提供高可用性和可扩展性。 |
| Ollama | - | gupt-assistant-service | 开源AI模型服务,使用qwen2.5:0.5b模型,提供智能问答功能。 |
2.7 工具库
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Hutool | 5.8.25 | 多个模块 | Java工具包,简化常用操作,提高开发效率。 |
| Lombok | 1.18.22 | 多个模块 | 减少样板代码,如getter/setter、构造函数等,使代码更简洁。 |
| Jackson | 2.15.3 | gupt-assistant-service (JSON处理) | 高性能的JSON处理库,用于对象序列化和反序列化。 |
| Apache HttpClient | 5.2.1 | gupt-auth gupt-assistant-service | HTTP客户端库,用于调用外部API,如Ollama服务。 |
2.8 构建工具
| 技术 | 版本 | 应用模块 | 选型理由 |
|---|---|---|---|
| Maven | - | 所有模块 | 成熟的项目构建和依赖管理工具,支持多模块项目管理。 |
| smart-doc | 2.7.7 | 所有模块 | 自动生成API文档,支持Markdown格式,便于接口文档维护。 |
3. 模块架构与技术应用
3.1 gupt-api
核心功能:定义系统API接口、数据传输对象(DTO)和视图对象(VO)。
技术应用:
- 定义了各模块的数据传输对象,如用户、课程、宿舍、邮件等
- 使用统一的DTO/VO模式进行数据传输,确保接口契约清晰
- 提供验证工具类ValidateUtil进行数据校验
3.2 gupt-auth
核心功能:负责用户认证和授权管理。
技术应用:
- Spring Security:提供认证授权框架
- JWT:实现无状态认证,支持Token生成和验证
- BCryptPasswordEncoder:密码加密存储
- 自定义JwtAuthenticationTokenFilter:拦截请求进行Token验证
- 基于角色的访问控制(RBAC):区分STUDENT、TEACHER、ADMIN角色权限
3.3 gupt-user-service
核心功能:用户信息管理,包括学生、教师和管理员。
技术应用:
- MyBatis-Plus:简化数据库操作
- Spring Security整合:实现用户登录认证
- StudentDetails:自定义用户详情类,实现UserDetails接口
3.4 gupt-course-service
核心功能:课程管理、成绩管理、请假管理。
技术应用:
- MyBatis-Plus:提供课程、成绩、请假记录的CRUD操作
- 事务管理:确保数据操作的一致性
- 与认证模块集成:通过SecurityContextUtil获取当前用户信息
3.5 gupt-dormitory-service
核心功能:宿舍管理、维修申请、消费管理。
技术应用:
- MyBatis-Plus:提供宿舍、维修订单、消费记录的CRUD操作
- 事务管理:确保消费和充值操作的数据一致性
- 数据统计:提供宿舍评分、消费统计等功能
3.6 gupt-club-service
核心功能:社团管理和社团活动管理。
技术应用:
- MyBatis-Plus:提供社团和活动的CRUD操作
- 数据转换:使用BeanUtil进行DTO和VO之间的转换
3.7 gupt-info-service
核心功能:通知管理和新闻管理。
技术应用:
- MyBatis-Plus:提供通知和新闻的CRUD操作
- Redis缓存:使用RedisCacheHelper缓存热点数据,提升查询性能
- Elasticsearch集成:将通知和新闻索引到Elasticsearch,支持全文检索
3.8 gupt-email-service
核心功能:邮件发送和管理。
技术应用:
- MyBatis-Plus:提供邮件记录的CRUD操作
- RabbitMQ集成:异步发送邮件,提高系统响应速度
- 状态管理:支持邮件的已读/未读状态管理
3.9 gupt-assistant-service
核心功能:AI智能助手,提供问答服务。
技术应用:
- Ollama集成:调用本地Ollama服务(qwen2.5:0.5b模型)生成回答
- FAQ匹配:优先通过FAQMatcher匹配常见问题
- Elasticsearch搜索:结合搜索结果增强回答质量
- HTTP客户端:使用Apache HttpClient调用Ollama API
- 邮件通知:通过email-service发送回答生成通知
3.10 gupt-thirdpart-service
核心功能:第三方服务集成。
技术应用:
- 阿里云OSS:提供文件上传服务
- Elasticsearch:提供搜索服务实现
- 模块化设计:将不同第三方服务封装为独立组件
3.11 gupt-common
核心功能:提供公共组件和工具类。
技术应用:
- 统一响应格式:Result和PageResult类封装API响应
- 异常处理:GlobalExceptionHandler统一处理异常
- Redis缓存工具:RedisCacheHelper简化缓存操作
- 通用工具:FaqMatcher用于FAQ匹配
3.12 gupt-config
核心功能:系统配置管理。
技术应用:
- Redis配置:RedisConfig配置缓存连接
- Elasticsearch配置:ElasticsearchConfig配置搜索引擎
- RabbitMQ配置:RabbitConfig配置消息队列
- MyBatis-Plus配置:MyBatisPlusConfig配置ORM框架
- 自定义属性配置:如JwtProperties、AliyunProperties等
3.13 gupt-domain
核心功能:定义数据模型和领域对象。
技术应用:
- 实体类定义:包含用户、课程、宿舍、社团等核心业务实体
- 枚举定义:如UserType、InfoType等
- Mapper接口:定义数据库访问方法
- 常量定义:系统中使用的各种常量
3.14 gupt-message-queue
核心功能:消息队列服务,目前框架已搭建但实现较少。
技术应用:
- 预留模块,用于扩展消息队列功能
3.15 gupt-web
核心功能:Web前端集成,作为系统入口。
技术应用:
- 集成各服务模块,提供统一的API入口
4. 关键技术实现
4.1 安全认证流程
- 用户登录时,提交账号密码到对应登录接口
- AuthenticationManager验证账号密码
- 验证通过后,生成JWT Token并返回给前端
- 后续请求携带Token,JwtAuthenticationTokenFilter拦截并验证
- 验证通过后,将用户信息存入SecurityContext
- 基于角色的访问控制,不同角色访问不同权限的接口
4.2 数据访问优化
- 使用MyBatis-Plus简化数据库操作,提供批量操作、分页查询等功能
- Redis缓存热点数据,如通知、新闻列表等
- Elasticsearch全文检索,提升信息查询效率
- 合理使用索引,优化查询性能
4.3 异步任务处理
- 邮件发送使用RabbitMQ异步处理,避免阻塞主线程
- AI助手回答生成后,异步发送邮件通知用户
4.4 分布式搜索引擎集成
- 通知和新闻内容索引到Elasticsearch
- AI助手结合Elasticsearch搜索结果生成回答
- 提供高效的全文检索功能
4.5 文件存储方案
- 使用阿里云OSS存储图片、文档等文件资源
- 提供统一的文件上传服务接口
5. 技术选型特点
5.1 模块化设计
系统采用模块化单体架构,将不同功能拆分为独立模块,便于团队协作开发和维护。
5.2 技术先进性
- 使用Spring Boot 3.x,支持Java 19
- 集成Elasticsearch 8.x,提供先进的搜索功能
- 引入AI大模型,提升系统智能化水平
- 采用JWT无状态认证,便于系统扩展
5.3 性能优化
- Redis缓存热点数据
- Elasticsearch全文检索
- 异步处理耗时操作
- 数据库索引优化
5.4 安全性考虑
- 密码加密存储
- 基于角色的访问控制
- JWT Token认证
- 统一的异常处理机制
5.5 可扩展性
- 模块化设计便于功能扩展
- 集成多种中间件,支持系统水平扩展
- 预留第三方服务集成接口
6. 总结
邮院通采用了当前主流的Java技术栈,结合Spring Boot、Spring Security、MyBatis-Plus等成熟框架,构建了一个模块化、高性能、安全可靠的管理系统。系统集成了Redis、RabbitMQ、Elasticsearch等中间件,提供了缓存、消息队列、全文检索等功能,同时引入了AI大模型,提升了系统的智能化水平。整体技术选型既考虑了系统的功能性需求,也兼顾了性能、安全性和可扩展性,为高校信息化管理提供了全面的技术支持。