Java 项目实战: 交友项目 - 开工任务书

发布时间:2026/10/15 4:03:08

Java 项目实战: 交友项目 - 开工任务书 概述我们开工前要准备 “继续往下写代码的资格”把一个空目录变成能跑起来的多模块微服务工程并在上面跑通手机号加验证码登录。纲要本章目标从空工程到可运行的微服务骨架与登录闭环五个板块的任务书认识项目 / 工程准备 / 接入第三方能力 / 实现登录 / 代码优化五件事的依赖关系图为什么顺序不能调换第一章结束时的工程形态预告模块树环境自检清单开工前必须就绪的七项以及哪些可以后补学习建议与常见误解本章第一篇实质内容指向本章要抵达的终点一句话讲清楚这一章的交付从一个空工程开始搭出项目的微服务骨架并跑通手机号 验证码登录包含首次登录自动注册。跑通的标准不看写了多少行代码而是看这条链路能不能从头走到尾手机端请求验证码 →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以后第二个服务要用就得复制一份。③ → ④先有SmsTemplateUserService.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本身只是文件夹不写一行 Javamf-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 NotesMyBatis-Plus 自动填充Nacos 快速开始阿里云短信服务文档总结这一章的定位是开工前的任务书五个板块、各自的产出物、可验证的验收标准以及一条由依赖推出来的执行顺序。验收不看代码量看链路——短信能发、验证码能存、登录能返回 token、新号能自动入库。环境清单里唯一可以后补的是短信账号用调试模式先把流程跑通即可。
延伸阅读

更多相关文章

2026/10/15 3:58:08

Python Flask 总结备忘:从入门到精通的完整路线

本文速览(TL;DR) 这是一份面向「总结备忘」与「进阶精通」双目标的 Flask 完整笔记。全文按「基础 → 原理 → 工程化 → 性能 → 安全 → 部署」的路径展开:先搭建环境与项目结构,再掌握路由、视图、Jinja2 模板与请求/响应生命周…

2026/10/15 3:58:08

Python毕设怎么做?基于Hadoop的新生儿败血症临床多指标数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习

计算机毕设指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!也可以在主页上或文末下与…

2026/10/15 6:23:15

PyTorch核心机制与实战:从动态图到训练调优全解析

我一直觉得,PyTorch 最大的魅力,是它把深度学习从“写框架代码”变成了“写 Python 本身”。你要是现在问我,做深度学习到底该从哪个框架入手,我的答案几乎不需要犹豫:PyTorch。不管你是刚接触神经网络的学生&#xff…

2026/10/15 6:23:14

TensorFlow 2.x图像分类实战:从数据管线到模型部署

每次有朋友问我深度学习入门该用什么框架,我的答案基本都是同一个:先把TensorFlow用熟。这倒不是说它在每个维度都比其他框架强,而是因为它的资料最全、踩坑答案最好找、从实验到部署的链路最短。前阵子我用TensorFlow 2.x做了一个花卉图像分…

2026/10/15 6:23:14

PyTorch深度学习实战:核心概念、图像分类与踩坑指南

从 2017 年第一次接触 PyTorch 到现在,我已经用它完成了十几个项目,从图像分类到目标检测,从单机训练到多卡分布式,可以说踩过的坑比写的模型还多。如果你正准备选一个深度学习框架入门,或者已经写了一些代码但总感觉知…

2026/10/15 6:23:14

OpenClaw开源仿生灵巧手:从仿真训练到实体部署全攻略

科研工位角落这台机械手,已经被我叫了大半年“小龙虾”。它的本名是 OpenClaw,一套开源模块化仿生灵巧手平台,包含实体硬件、通信固件、上位机 API 和仿真训练环境。第一次在物理引擎里加载模型,按下播放键看到五根手指完全张开的…

2026/10/15 6:18:14

VMamba医学图像分割实战:SS2D四向扫描机制与工程落地指南

1. 从序列建模到视觉主干:为什么要把状态空间模型搬进图像分割医学图像分割这个方向,做过的朋友都知道,它跟自然图像分割完全不是一个难度级别。CT、MRI、超声这些模态,目标边界模糊、对比度低、不同器官之间的灰度差异可能只有几…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑