在计算机毕业设计里,把 SpringCloud 微服务和 AI 大模型放进一个人力资源管理系统,是近年来比较典型的综合型选题。HR 系统业务模块多、边界清楚,适合按微服务拆分;AI 大模型又能在简历解析、智能问答、招聘咨询等功能上提供差异化亮点。但拿到这类题目后,真正卡住进度的往往不是业务功能,而是几个工程问题:服务到底拆几个、注册中心与配置中心怎么搭、网关如何统一转发、AI 接口怎么接入业务服务、Layui 表格为什么渲染不出数据。下面以基于 SpringCloud + Layui + AI 大模型的智能人力资源管理系统为例,把架构设计、环境准备、核心实现、启动联调和排错路径完整走一遍。
1. 先理解这套系统的技术主线和业务边界
1.1 传统人力资源系统的痛点
大多数基础 CRUD 项目都会把人力资源系统做成单体应用。单体在功能演示阶段没有问题,但放到真实企业场景会出现三类明显的痛点。
第一是模块耦合。员工管理、考勤、薪资、招聘、绩效通常放在同一个工程里,甚至共用同一个数据库。改薪资计算逻辑要重新发布整个应用,影响面大,回归成本高。
第二是扩展困难。招聘季或月底考勤汇总时,某个模块访问量陡增,单体应用只能整体加机器,资源浪费严重。
第三是协作效率低。多人开发同一个工程时,代码冲突频繁,测试和部署互相牵制,版本发布窗口很难控制。
微服务化解决的核心问题,是把业务按照领域边界拆开,让每个服务独立开发、独立部署、独立扩容。SpringCloud 在这个架构里承担的是基础设施层角色:Nacos 负责服务注册和配置管理,Spring Cloud Gateway 负责统一入口和路由转发,OpenFeign 负责服务间的声明式调用。
这里需要先做一层判断:毕业设计里的微服务并不是拆得越多越好。4 到 6 个业务服务加网关、公共模块,已经能完整展示微服务脚手架能力。拆得过多,分布式事务、服务间联调和部署难度都会快速上升,反而掩盖业务本身的亮点。
1.2 AI 大模型在这个系统里能落地的功能
AI 大模型在这类系统里最合适的用法,是承担语义理解、信息抽取和文本生成类工作。常见落地功能有四类:
- 简历解析:把非结构化简历文本抽取成姓名、学历、工作经历、技能标签等结构化字段。
- 智能问答:员工询问考勤规则、请假流程、薪资发放时间,由大模型结合制度文档生成回答。
- 招聘内容生成:根据岗位要求生成招聘 JD、面试评估表模板。
- 面试题生成:根据岗位技能要求生成笔试或面试问题。
以简历解析为例,传统做法是写正则和规则模板。规则方案对固定格式简历有效,但简历格式千变万化,规则会越写越多,维护成本非常高。大模型方案只需要给一段系统提示词,把简历文本丢进去,再指定输出 JSON 结构,就能得到相对稳定的结构化结果。
它的代价也很明显:接口耗时比普通接口长,结果存在随机性。所以工程上必须做超时控制、结果校验和降级处理,不能把 AI 直接写死在核心业务链路上。
1.3 建议的模块拆分方案
结合 HR 业务和微服务脚手架要求,建议拆成以下服务:
| 服务名 | 核心职责 | 主要实体 | 是否对接 AI |
|---|---|---|---|
| auth-service | 登录认证、JWT 签发、用户管理 | sys_user | 否 |
| employee-service | 员工档案、部门岗位 | employee | 否 |
| attendance-service | 考勤记录、请假审批 | attendance | 可选 |
| salary-service | 薪资计算、工资条 | salary | 否 |
| recruit-service | 简历投递、候选人管理 | candidate | 是 |
| ai-service | 大模型接口封装、提示词管理 | ai_log | 是 |
| gateway-service | 统一路由、鉴权过滤 | 无 | 否 |
实际项目里也可以把招聘服务和 AI 服务合并成一个服务,减少调度链路。下面代码示例以 auth-service、employee-service、ai-service 和 gateway-service 为主。
2. 技术选型与本地环境准备
2.1 技术栈清单
这套系统涉及前端、后端以及 AI 三层,技术栈建议如下:
| 层次 | 组件 | 说明 |
|---|---|---|
| 微服务框架 | Spring Boot 2.7.x + Spring Cloud 2021.0.x | 稳定组合,资料多 |
| 微服务组件 | Spring Cloud Alibaba 2021.0.5.0 | 提供 Nacos、Sentinel 集成 |
| 注册与配置 | Nacos 2.x | 注册中心 + 配置中心 |
| 网关 | Spring Cloud Gateway | 统一入口 |
| 服务调用 | OpenFeign | 服务间声明式调用 |
| 数据库 | MySQL 5.7 / 8.0 | 业务数据 |
| 缓存 | Redis 5.x / 6.x | Token、验证码、高频字典 |
| 前端 | Layui 2.9 + jQuery | 后台管理页面 |
| AI 能力 | 大模型 HTTP API | 简历解析、智能问答 |
这里特别提醒版本对齐问题。Spring Cloud Alibaba 的每个版本都和 Spring Boot、Spring Cloud 有严格对应关系,不能随意组合。最稳妥的做法是先到 Spring Cloud Alibaba 官方仓库查看版本说明,找到与本地 Spring Boot 匹配的版本号,再创建父工程。版本不对最常见的表现是启动时报NoSuchMethodError或ClassNotFoundException。
2.2 本地环境检查清单
开始写代码前,先把下面几项检查做完:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| JDK 版本 | java -version | 显示 8 或 17 |
| Maven | mvn -v | 显示 3.6+ |
| MySQL | mysql --version | 能连接数据库 |
| Redis | redis-cli ping | 返回 PONG |
| Nacos | 访问 http://localhost:8848/nacos | 能打开控制台 |
如果使用 Docker,可以用两条命令快速启动 MySQL 和 Redis,方便本地复现:
docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0 docker run -d --name redis7 -p 6379:6379 redis:7注意:本地学习环境可以用 root 账号和简单密码,但项目文档里要明确标注这些配置仅限本地。发布到服务器前,必须替换为环境变量或配置中心管理,避免密码泄露。
2.3 数据库设计
数据库按服务拆分的原则,每个服务使用独立库。最小演示可以先建两个库:hr_employee和hr_ai,认证相关表单独放hr_auth。
员工表是核心表,DDL 示例如下:
CREATE DATABASE IF NOT EXISTS hr_employee DEFAULT CHARACTER SET utf8mb4; USE hr_employee; CREATE TABLE employee ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', employee_no VARCHAR(32) NOT NULL UNIQUE COMMENT '工号', name VARCHAR(64) NOT NULL COMMENT '姓名', department VARCHAR(64) COMMENT '部门', position VARCHAR(64) COMMENT '岗位', phone VARCHAR(20) COMMENT '手机号', email VARCHAR(128) COMMENT '邮箱', status TINYINT DEFAULT 1 COMMENT '1在职 0离职', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) ENGINE=InnoDB COMMENT='员工信息表';设计要点有两个。第一,工号字段要加唯一约束,它是业务上的自然人标识;第二,薪资、身份证、银行账号这类敏感字段不要放在这张表里,应该单独建表并做字段级权限控制。这个细节在毕业设计答辩里很加分。
2.4 Nacos 启动与验证
下载 Nacos 2.x 后,Windows 下进入 bin 目录执行:
startup.cmd -m standaloneLinux 或 macOS 下执行:
sh startup.sh -m standalone启动成功后访问 http://localhost:8848/nacos ,默认账号密码都是nacos。单机模式不依赖额外数据库,适合本地学习;如果要在多台机器上做集群,需要提前配置 MySQL 存储和集群节点地址。
3. 项目工程结构与网关设计
3.1 Maven 多模块结构
工程建议使用 Maven 多模块管理,整个项目一个父 pom,公共能力单独抽成一个 common 模块,各服务作为独立模块。
hr-cloud-system ├── pom.xml 父工程 ├── hr-common 公共模块:返回结果、工具类、异常 ├── gateway-service 网关服务 ├── auth-service 认证服务 ├── employee-service 员工服务 ├── ai-service AI 服务 ├── recruit-service 招聘服务(可选) └── sql SQL 脚本目录父 pom 的关键依赖声明如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> <relativePath/> </parent> <properties> <spring-cloud.version>2021.0.8</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version>