☰
Java 项目实战: 交友项目 - 开工任务书
2026/10/15 4:02:59 网站建设 项目流程

概述

我们开工前要准备 “继续往下写代码的资格”:把一个空目录变成能跑起来的多模块微服务工程,并在上面跑通手机号加验证码登录。

纲要

  • 本章目标:从空工程到可运行的微服务骨架与登录闭环
  • 五个板块的任务书:认识项目 / 工程准备 / 接入第三方能力 / 实现登录 / 代码优化
  • 五件事的依赖关系图:为什么顺序不能调换
  • 第一章结束时的工程形态预告(模块树)
  • 环境自检清单:开工前必须就绪的七项,以及哪些可以后补
  • 学习建议与常见误解
  • 本章第一篇实质内容指向

本章要抵达的终点

一句话讲清楚这一章的交付:从一个空工程开始,搭出项目的微服务骨架,并跑通"手机号 + 验证码"登录,包含首次登录自动注册。

"跑通"的标准不看写了多少行代码,而是看这条链路能不能从头走到尾:手机端请求验证码 →mf-app-server生成验证码并写入 Redis → 手机端提交验证码 → app-server 校验 → 通过 Dubbo 调mf-dubbo-db查库 → 用户不存在就建号 → 签发 JWT 返回。

五个板块的任务书

板块要做什么产出物验收标准
① 认识项目搞清产品是什么、用什么架构、模块怎么划一张留在脑子里的图,不是代码能说清 app-server 与 dubbo-db 各自职责,以及为什么 Dubbo 要拆接口模块和服务模块
② 工程准备装工具、建模块、配依赖能编译通过的多模块 Maven 聚合工程mvn clean install全绿;根工程下层级与模块名和讲义 3.2.2 模块表一致
③ 接入第三方能力打通阿里云短信,并封装成自动装配组件mf-autoconfig中的SmsTemplate、SmsProperties、mfAutoConfiguration、META-INF/spring.factories业务模块里不写任何配置类、不 new 任何 SDK 对象,直接@Autowired SmsTemplate就能发短信
④ 实现登录验证码 + JWT + 自动注册POST /user/login、POST /user/loginVerification两个接口,JwtUtils工具类用 Postman 走完两段请求:先拿验证码,再带着验证码登录,返回体里同时有token和isNew;新手机号登录后库里多出一条tb_user记录
⑤ 代码优化下沉公共字段,交给 MyBatis-Plus 自动填充BasePojo抽象类、MyMetaObjectHandlerUser不再自己声明created/updated;插入数据时不手动赋值,两列也有值

③ 的验收标准值得单独强调一遍:它是"组件封装得对不对"的唯一判据。只要业务代码里还出现一次DefaultProfile或IAcsClient,就说明抽象漏了。

依赖关系:顺序不是课表排的

这五件事的先后,是被依赖逼出来的,不是随便编的顺序。

决定技术选型的理由

决定分层与封装边界

模块没分好,
组件没地方放

组件没封装,
业务就直连 SDK

能跑通了,
才谈得上优化

① 认识项目
无代码产出

② 工程准备
多模块骨架

③ 接入第三方能力

④ 实现登录

⑤ 代码优化
BasePojo + 自动填充

四条边各有一句话的理由:

  • ② → ③:mf-autoconfig是从一开始就规划好的模块。模块没分出来,短信组件只能塞进mf-app-server,以后第二个服务要用就得复制一份。
  • ③ → ④:先有SmsTemplate,UserService.sendMsg()才可能只写一行调用。反过来先写登录,业务里就会直接依赖阿里云 SDK,后面再想抽就得到处改。
  • ④ → ⑤:BasePojo是在User落库时才暴露出"每个实体都要手写两个时间字段"这个重复的。没写过一遍,抽象就没有依据。
  • ① → 全部:认知类板块不产出代码,但它决定后面所有的"为什么这么选"。先看导学再动手,不是形式主义。

第一章结束时的工程形态

讲义 3.2.2 的模块表是"要建什么",这一章的代码快照是"建成了什么样"。对着下面这棵树开工,就知道终点在哪。

mf ├── pom.xml ├── mf-autoconfig # 自动装配组件,本章交付 SmsTemplate 与 spring.factories │ └── src/main/resources/META-INF/spring.factories ├── mf-model # 实体类,本章交付 User 与 BasePojo ├── mf-commons # 工具类,本章交付 JwtUtils ├── mf-dubbo # 只作父工程,不写代码 │ ├── mf-dubbo-interface # 服务接口,本章交付 UserApi │ ├── mf-dubbo-db # 数据库服务提供者,本章交付 UserMapper / UserApiImpl / MyMetaObjectHandler │ └── mf-dubbo-mongo # MongoDB 服务提供者,本章只建骨架,没有业务 └── mf-app-server # 与手机端交互的入口,本章交付 LoginController / UserService

两个容易忽略的点:mf-dubbo本身只是"文件夹",不写一行 Java;mf-dubbo-mongo这一章是空壳,它的用处在后面的附近的人与动态模块。

环境自检清单

开工前把这张表从上到下过一遍,能省掉后面一大半"跑不起来又不报明显错"的时间。

项要求怎么验必须 / 可后补
JDK8java -version输出1.8.0_xxx必须
Maven3.6+,配国内镜像mvn -v;改settings.xml的<mirrors>指向阿里云,否则拉依赖慢到怀疑网络必须
IDEA装好 Lombok 插件并开启注解处理打开工程后@Data能点进去、无红色波浪线必须
Nacos启动并注册可用访问http://192.168.136.160:8848/nacos,默认nacos/nacos能进控制台必须
Redis6379 可连redis-cli -h 192.168.136.160 ping回PONG必须
MySQL建库mf,导入 SQLmysql -uroot -proot -e "use mf; show tables;"能看到tb_user必须
短信账号阿里云 AccessKey + 签名 + 模板先跑通再说可后补
端口规划app-server 18080 / dubbo-db 18081 / Dubbo 协议 20881 / Nacos 8848lsof -i:18080启动后应被占用必须
Postman调POST /user/login返回 200必须
Android 模拟器网易 MuMu,装 APK能连上 app-server可后补

短信账号为什么可以后补:UserService.sendMsg()里真正的发送与写 Redis 是两件事,先把验证码固定成123456写进 Redis、把template.sendSms(...)注释掉,整条登录链路照样能调通。等账号下来了再把那行注释放开,业务代码一行都不用改——这正是第 ③ 步封装组件的收益。

学习建议

先跑通再求甚解。这一章的目标是"看到东西动起来",不是把spring.factories的加载时机、Dubbo 的泛化调用都抠透。跑通之后再回头读实现,理解成本低得多。

跟着敲,不要复制。多模块工程的依赖传递、<parent>指向、spring.factories的路径,这些地方复制粘贴非常容易漏一层。漏了之后症状还不是报错,是"注解不生效"。

报错先看日志定位模块。多模块工程的报错十有八九是第一句:ClassNotFoundException或找不到com.mf.model.domain.User,真实原因往往是被依赖的模块没install到本地仓库。先mvn clean install -DskipTests再谈别的。

用 Git 分阶段提交。每完成一个板块提交一次,出问题好回退。这是真实工程习惯,也是这一章最便宜的保险。

几个容易踩的误解

误解实际情况
先把讲义通读一遍再开工讲义里大量内容是"做完之后才看得懂"的。边做边翻,效率高得多
模块划分可以边写边改中期改模块划分,要动全部 pom 的<parent>和<dependency>,成本远高于开工前花十分钟想清楚
这一章就是照抄代码抄出来的东西只有这一章能用。重点是理解分层的边界和封装的套路,比如为什么SmsTemplate要放在 autoconfig 而不是 app-server
登录功能很简单这里串了四类技术:Redis 缓存、Dubbo RPC、第三方服务、JWT。任何一环配错都表现为"登录失败"

下一篇

这一章的第一篇实质内容就是《项目介绍》——先把这个平台是干什么的、面向谁、后端用什么技术栈讲清楚,再去建工程。认知在前,动手在后,顺序和上面那张依赖图是一致的。

官方文档

  • Spring Boot 2.3.9 Release Notes
  • MyBatis-Plus 自动填充
  • Nacos 快速开始
  • 阿里云短信服务文档

总结

这一章的定位是开工前的任务书:五个板块、各自的产出物、可验证的验收标准,以及一条由依赖推出来的执行顺序。验收不看代码量,看链路——短信能发、验证码能存、登录能返回 token、新号能自动入库。环境清单里唯一可以后补的是短信账号,用调试模式先把流程跑通即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询