SpringBoot的认识

简介

springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。用注解替换掉了许多繁琐的代码,极大简化了开发。而我们的开发项目,说到底就是对数据的增删改查。所以在这,我们先学会基本的使用,能够做出对数据库增删改查的接口即可

三层架构

要学会springboot,理解三层架构必不可少。何为三层架构?

  1. 表示层(Presentation Layer):
    • 表示层负责用户界面的展示和用户交互。
    • 在Spring Boot中,可以使用控制器(Controller)或者RESTful API来处理用户请求,并返回相应的视图或数据给用户。
    • 表示层主要与用户进行交互,接收用户输入的请求并将其传递给业务逻辑层进行处理。
  2. 业务逻辑层(Service Layer):
    • 业务逻辑层实现了应用程序的核心业务逻辑。
    • 在Spring Boot中,可以使用服务(Service)组件来封装和实现业务逻辑。
    • 业务逻辑层负责处理从表示层接收到的请求,调用相应的数据访问层进行数据操作,并根据业务规则对数据进行处理和转换。
    • 业务逻辑层还可以协调不同的数据访问层操作,处理事务管理和异常处理等。
  3. 数据访问层(Data Access Layer):
    • 数据访问层负责与数据存储(如数据库、缓存等)进行交互。
    • 在Spring Boot中,可以使用持久层框架(如Spring Data JPA、MyBatis等)来简化数据库操作。
    • 数据访问层封装了对数据的增删改查操作,并提供给业务逻辑层进行调用。
    • 数据访问层的主要职责是操作和管理数据,包括数据的读取、写入、更新和删除等。

简单来说就是,在我们后台中,需要将整体项目分成三个部分,第一个就是表示层,但是表示层包括了controller控制层和前端页面,在这里我们只讨论controller层。所以我们将上面的三层架构稍微改变一下,就是控制层、业务逻辑层、数据访问层。

按照我的理解,数据访问层可以理解为sql语句,是对数据库进行直接进行增删改查操作的,定义好相应的方法,然后用sql语句进行数据库的操作;业务逻辑层就是定义了调用数据访问层的方法,例如,命名一个名为delete的方法,我们通过调用数据访问层的sql语句来对数据库进行操作。在这里我们是不是可以看出,我们业务逻辑层是调用了数据访问层,所以我们会将定义了操作数据访问层的方法放到业务逻辑层,一般放入名为service的文件夹下,而又sql语句的数据访问层就放在mapper文件夹下,目前我们就这样引出了两个架构。

控制层,顾名思义,用户可以通过调用接口来对数据库数据进行访问,而在前面我们可以知道,对数据进行操作的话,需要业务逻辑层来去调用数据访问层才可以,那控制层要如何实现对数据库数据进行访问呢?答案就是,控制层调用业务逻辑层。控制层一般位于controller目录下,在控制层controller类下面,我们通过注入的方式引入业务逻辑层的代码(后面会讲),然后我们就可以在控制层通过调用业务逻辑层来实现与数据访问层进行交互从而达到操作数据库的目的。

不难看出,三层架构其实是层层相连的,控制层调用业务逻辑层,业务逻辑层调用数据访问层,每一层的任务职责也不一样。控制层负责提供接口,根据用户调用的接口来调用相应的业务逻辑层定义的方法,然后这些方法又会在数据访问层里找到对应的sql语句进行执行然后返回结果。

所以说,我们写后端,只需要记住开发顺序即可(目前是这样的),首先,因为我们要操作数据库,所以肯定要先知道数据表对应的字段名是什么,然后我们用驼峰命名法,在pojo包(或者是bean目录)下定义好实体类并写上get、set、toString方法,然后根据需求,在mapper包下定义好业务逻辑层里面的方法名,注意方法名要做到见名知意,例如getUser就是获取用户。然后定义好数据访问层的接口方法以及与数据库交互的sql语句,接下来就是定义对应的业务逻辑层,比如添加一个用户的业务就去调用添加用户的sql语句对应的数据访问层的部分,最后就是定义控制层,在控制层方法里面引入业务逻辑层对象,然后通过对象访问方法,从而实现开发的基本流程。

举例

1、首先创建一个springboot的项目(不赘述)

分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--继承 SpringBoot 框架的一个父项目,所有自己开发的 Spring Boot 都必须的继承-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<!--当前项目的 GAV 坐标-->
<groupId>com.bjpowernode.springboot</groupId>
<artifactId>002-springboot-springmvc</artifactId>
<version>1.0.0</version>

<!--maven 项目名称,可以删除-->
<name>002-springboot-springmvc</name>
<!--maven 项目描述,可以删除-->
<description>Demo project for Spring Boot</description>

<!--maven 属性配置,可以在其它地方通过${}方式进行引用-->
<properties>
<java.version>1.8</java.version>
</properties>


<dependencies>
<!--SpringBoot 框架 web 项目起步依赖,通过该依赖自动关联其它依赖,不需要我们一个一个去添加
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--SpringBoot 框架的测试起步依赖,例如:junit 测试,如果不需要的话可以删除-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

<build>
<plugins>
<!--SpringBoot提供的打包编译等插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

未完待续….