Day01 真正要达成的 3 个目标
- 项目能跑起来:前端 nginx 能打开页面,后端 SpringBoot 能启动。
- 能完成一次联调登录:前端点登录 → 后端进 Controller/Service/Mapper → 查库 → 返回 token。
- 能打开接口文档:
http://localhost:8080/doc.html能看到 knife4j/Swagger 页面。
1)软件开发流程/角色/环境:你只要记一件事
把“做项目”想成拍电影:
- 需求:写剧本(需求文档、原型)
- 设计:定场景、道具(UI/数据库/接口)
- 编码:开拍(写代码+单元测试)
- 测试:看片挑错
- 上线运维:正式上映 & 机房维护
环境:
- 开发环境:你自己电脑/内网
- 测试环境:测试同事用的
- 生产环境:线上给用户用的
2)项目结构:你只要认清 3 个模块在干嘛
把它想成一个餐厅的分工:
- sky-common:公共“工具箱”(常量、异常、工具类…)
- sky-pojo:各种“数据模型”(Entity/DTO/VO)
- sky-server:真正干活的“后厨”(Controller/Service/Mapper/配置/启动类)
你之后看代码迷路,就先问自己:这段代码是在“接单(Controller)”还是“做菜(Service)”还是“去仓库拿货(Mapper)”?
3)前后端联调:为什么前端能打到后端?
你看到的两个地址不一样:
- 前端请求:
http://localhost/api/employee/login - 后端接口:
http://localhost:8080/admin/employee/login
答案:nginx 反向代理(它像“前台接待”,把 /api 转发给后厨后端)
配置核心就一句:
location /api/ { proxy_pass http://localhost:8080/admin/; }
你只要记住:前端统一打 nginx(80端口),nginx 再转到后端(8080) 。
4)登录链路:Controller / Service / Mapper 到底各做啥?
讲义给了非常标准的“三层”分工:
- Controller:收参数、调用 service、封装返回
- Service:业务校验(用户不存在/密码错/禁用)
- Mapper:真正查库
select * from employee where username=?
你今天最建议做的 debug:
在登录接口打断点,点一次登录,看调用顺序是不是 Controller → Service → Mapper → DB → 返回。
5)完善登录:为什么要 MD5?
讲义说得很直白:员工表明文密码太危险,所以把密码存成 MD5 密文,并且登录时把前端密码也 MD5 再比对。
你只要记住一句话:
数据库存“锁的指纹”(密文),登录时拿“钥匙做一次指纹”(MD5)比对,不存明文。
6)YApi 和 Swagger:它俩不是替代关系
- YApi:设计阶段用,先把“合同/接口约定”放进去(前后端并行)
- Swagger/Knife4j:开发阶段用,后端跑起来就能直接在线调接口,还能生成文档
Day01 实操清单
- 启动 nginx,浏览器能打开管理端页面(80端口)
- 导入
sky.sql,确认表建好了(employee 等) - 改
application.yml的数据库账号密码,启动后端(8080) - 前端点登录能成功(或你用 Swagger 测登录)
- 打开
http://localhost:8080/doc.html看接口文档 - (加分)按讲义把登录密码改成 MD5,并修改代码比对
3 个“最常见卡点”
- 前端能开,但登录报 404 / 502:多半是 nginx 代理没转对(/api → 8080/admin)
- 登录一直密码错误:你数据库还是明文,但代码已经 MD5(或者反过来)
- doc.html 访问不了:静态资源映射没配好(
addResourceHandlers)