首页 > 技术文章 > 从零开始的 Spring Boot 学习

wilfredshen 2020-07-14 00:38 原文

前排劝退:本教程只针对 Spring Boot 以及 SSM 框架的初学者,展示 SSM 框架的大概的工作流程,此外也不会讲类似 SpringMVC 这些概念,目的单纯是为了能够跑起一个 SSM 框架的项目,而对其他的东西不求甚解。

前期准备

工具/环境 备注
Windows 10 博主系统是 win10,当然考虑到语言是 Java,所以系统的差异可能并不会影响到这个项目。
IDEA ultimate 请尽可能使用 ultimate 版本,community 版本功能不全,可能在本教程中会遇到各种问题。
如果您是在校大学生,那么使用学校邮箱大概率可以得到一年免费的 ultimate 版本使用权。
如果您是 eclipse 党,可以考虑更换 IDEA 。
JDK 8 Java 的经典版本,如果您的版本过低,可能会遇到一些问题,推荐升级。
MySQL 5.7 同样是一个经典版本,过低的推荐升级,因为 5.7 之前的版本和 5.7 之后的版本可以类比为 1 和 2。
Navicat for MySQL 可选项,但是强烈推荐(可以寻找替代品)。有一个图形化界面怎么也比小黑框好。

创建项目

博主的 IDEA 装了中文插件(2020.1 版本之后有),不装也可以,见仁见智。

这是 ultimate 版的界面,如果是 community,左边那一列基本上是空荡荡的(金钱的力量)。选择 Spring Initializer ,右边的如图设置即可。

这一页的重点在图上都有写。看这一页起了好多名字,起名困难的我留下了眼泪(别急,后面还要起名字)。

这一页的功能是选择预装的依赖,可以什么都不选,之后自己按需添加。

起名字又来了,这回是项目的本地名称,也就是只记录在 IDEA 中,之前的名字是记录在项目信息中的。

起完名字点击 Finish,准备进入新的篇章。

项目结构

作为一个与时俱进的项目,结构当然也要随大流,下面放一下项目最基本的包结构:

src/main/
    java/com/example/demo/
        controller/
            Controller.java
        entity/
            User.java
        mapper/
            UserMapper.java
            UserMapper.xml
        service/
            impl/
                UserServiceImpl.java
            UserService.java
        DemoApplication.java
    resources/

上面给出了大致的结构,接下来讲一下它们(之中的文件)应当承担的功能:

名称 功能
controller MVC 中,它直观的对应其中的 C
entity 也有人叫 PO (Persistent Object)PO 这个名字直观地看出它对应数据库中的记录,它的每一个属性都对应一个字段。
mapper 它的同类是 DAO (Data Access Object),显然它是用来处理数据的,它封装了 jdbc
Mybatis 是一种半自动化的 ORM 框架,所以 UserMapper.java 是一个 interface,而非 class,具体的SQL 语句我们写在同级目录下的同名 xml 文件中。
mapperDAO 是两种可以互相取代实现方式,界限没有那么绝对。
service 它显然是用来实现服务的,这里一般定义一些接口。
service/impl 这里实现 service 中的接口,当然可以不用分化那么细,不写接口直接写一个类也是没问题的。
dto Data Transfer Object,是传输数据的对象。在上面的结构中没有体现,因为它完全可以被 entity 取代。
你可以把 DTO 理解为 PO 的 瘦身版,比如有时候返回给用户的时候不希望返回密码等等数据:
1. 你可以选择置为 null
2. 或者用一个 DTO,其中根本没有 password
在项目越来越大的时候后者是一个几乎必然的选择。

这几个包已经描述完了,你大概可以感受到这样一个项目是怎样运作的了:

  1. 用户发来请求,被某个 controller 接收到
  2. controller 调用 service 来完成服务
  3. service 完成服务,调用 mapper 将数据持久化至数据库中,并返回结果
  4. 在这其中,传递数据的应当是 entity,细化一点就是 DTO,简单一点就是普通的 Java 对象

还有一个 DemoApplication.java 文件没有提到,在下一节中将揭晓它的功能。

Spring 注解

上一节讲了项目的整体结构,这里将把 Spring 添加到我们的项目中。

思考一下,如果没有 Spring,我们可能会在 controllernew 一些 socket 来监听端口,然后将接收到的数据打包成一个对象,然后创建一个 service 来处理……

随便一想这都是上百行的代码量,一不小心可能还会来几个 NullPointerException

推荐阅读