Java后端系统学习路线--白卷项目复盘

226 阅读6分钟

1、白卷项目的优点

大榜:前面我们讨论和回顾了Java后端学习路线中的相关基础,包含了Java基础(一)Java基础(二)JavaEE基础,接下来我们以白卷项目为案例,进入Java Web的新天地。

小汪:白卷项目,我看过啊,这个项目对应的博客文章,知识点讲得很清晰易懂。作者的目标是根据这个教程,可以帮助 新入行的或是刚开始学习相关技术 的小伙伴们把一个完整的项目还原出来,建立起对前后端分离式 Web 开发的整体认知。

大榜:是啊,白卷项目的资料很齐全,有21篇博客文章,而且项目源代码也放在了Github上,是不是很香?

小汪:真香啊,我把白卷项目download下来后,试着跑了下,里面的功能很全面,真可谓麻雀虽小、五脏俱全!

白卷项目包含了2大模块:用户管理模块、内容管理模块。用户管理模块中包含了对用户、角色的操作;内容管理模块是最核心的,包含了图书和博客文章的管理功能。你看,这是应用架构图:

image.png

大榜:白卷项目确实是五脏俱全,而且技术也用得比较新,项目是前后端分离的,前端使用Vue、ElementUI;后端使用Spring全家桶,安全方面使用了Apache Shiro,数据存储主要使用了MySQL、Redis。

小汪:是的了,作者选用地技术栈也不错,值得咱两好好借鉴学习。

大榜:哈哈哈,好的,我们一起学习进步!白卷项目是一套不错的前后端分离的实战项目,可以作为其他项目搭建的脚手架。不过,白卷也存在一些不足之处,比如没有API在线文档,不方便前后端人员协同开发;其次,使用了JPA作为持久化层,国内一般采用MyBatis作为持久化层;还有,图书馆页面的分页是纯靠前端完成的,当图书数量有几万本时会存在问题;还有Web层的全局异常处理器,实现得很简陋,展示给前端的信息太少了,不便于问题排故。

2、后续优化事项

小汪:我懂了,榜哥这是要在白卷项目的基础之上,进行相关优化啊,小弟我支持你!

大榜:哈哈哈,感谢老弟啊!一个软件产品的生命周期,一般是这样的:市场调研(收集需求)、需求分析、软件系统设计、软件开发、软件测试、软件部署及维护、淘汰。我们程序员一般是根据项目经理或者老板给的需求出发,对需求进行分析,然后做软件编码实现。

小汪:是啊,软件系统设计一般轮不到咱们,咱们都是拧螺丝,日复一日地做着分析需求,然后编码实现的工作。

大榜:没办法,软件系统设计的活儿一般都是架构师来完成,我们只有把拧螺丝做好了,才能一步一个脚印地成长为架构师水平。

小汪:榜哥,你扯远了,我们还是回到白卷项目的后续优化把?

大榜:是你小子先扯远的,算了,我们还是言归正传。白卷项目的后续优化,包括如下几点:

1)引入Swagger API在线文档,方便前后端联调测试;

2)将JPA做持久层修改为使用MyBatis做持久层;

3)将前端分页查询,修改为后端分页查询;

4)使用统一的返回响应格式封装;

5)使用统一的Web层异常处理器;

6)登录功能使用明文存储密码,可修改为加密存储以及登录认证;

7)用户、角色、权限与菜单的分配,使得不同用户登录后,可以看到不同的导航栏菜单;

8)博客功能开发;

9)Web项目优化的解决方案;

10)项目部署上线。

小汪:一下子提出了10个优化点,榜哥果然是在白卷项目上花了功夫。我问一下,第3个优化点:将前端分页查询,优化为后端分页查询。感觉优化起来很简单啊,没什么难点,而且白卷项目的作者,后面也采用了后端分页查询啊。

大榜:作者实现的分页查询,只传入了每页数量,以及查询第几页 这2个参数,实现得很简陋,无法满足按某个字段来排序的需求场景。比如老板今天给你说,按照 图书出版日期 排序一下,我们是不是就得加班去 修改代码了?

小汪:你这么一说有道理啊,看来分页不是那么简单啊?

大榜:是啊,我刚参加工作的时候,和我对接的前端同事,嘲笑我分页查询都不会,他说分页查询是最基础的功能。当时我是备受打击,心想,分页查询到底是个啥,我一定要搞懂它。

小汪:那个前端哥们感觉有点吹牛逼啊,他自己写前端,又不做分页。他要是觉得分页简单,让他来做分页啊!

大榜:哈哈哈,陈年往事,不提也罢。说实话,当时我花了一周,搞懂分页查询后,真心觉得没有那么简单,比如分页查询的使用场景:什么情况下必须使用分页,哪些情况下不用分页也能满足需求。还有,分页查询的结果按照什么东西来排序?以及是升序还是降序排列呢?

小汪:你这么一说,我感觉自己以前只会使用别人写好的分页组件,来完成分页查询,自己并没有深入研究过分页查询的本质,我该好好学习下分页查询了。我记得后端做分页查询后,前端页面的展示是这样的:

image.png

大榜:嗯嗯,是的,这说明后端先接收前端的分页参数,然后返回了查询的总记录数、总页数。

小汪:明白了,如果分页查询做得不好,一旦老板需求变化了,就要加班修改代码了。没想到啊,一个分页功能,居然有这么多需要注意的点,我下去也要好好看看分页查询,争取做出一个功能齐全的分页组件。

3、总结

通过小汪和大榜的对话,我们讨论了一个容易上手的前后端分离项目--白卷,介绍了白卷的功能模块和技术栈,然后着重分析了白卷项目的优点和后续优化事项。后面,我们将针对优化事项,设想需求场景,一个个地进行优化。

希望能够通过小汪和大榜彼此对话这种方式,总结自己曾经爬过的坑,希望为新入行的同学们抛砖引玉了。

4、参考内容

Vue + Spring Boot 白卷项目实战