我们简单看一下创建SpringBoot项目所需要的知识和前期的准备
三层架构
开发架构中一般有俩种架构,C/S架构(客户端/服务器),B/S架构(浏览器/服务器)。
在我们JavaEE开发中,几乎全是基于B/S架构的开发。
三层架构分为:
- 表现层(web层)
- 表现层也就是我们常说的Web层,它负责接收客户端请求,并向客户端响应结果,通常是客户端使用http请求web层,web层需要接收http请求,完成http请求。
- 表现层是依赖于业务层的,当表现层接收到客户端请求,会调用业务层进行业务处理,并将处理结果响应给客户端。
- 业务层
- 业务层也就是Service层,它是负责进行业务逻辑处理的,和我们开发的需求息息相关。
- 虽然web层(表现层)依赖于我们的业务层,但我们的业务层并不依赖表现层,但在业务层进行业务处理时会依赖持久层。
- 当我们做数据持久化时需要保证事务的一致性。
- 持久层
- 持久层也就是dao层。它是负责数据持久化的。通俗一点讲,持久层就是和数据库进行交互,对数据库进行增删改查的。
前后端分离
-
什么是前后端分离
传统开发:前端–>html静态页面–>后端–>JSP
前后端分离开发:前端只负责前端的代码编写,后端只负责服务端的代码编写,前端和后端之间协商好接口文档即可。
【接口文档(URL、参数、数据类型…)】
-
好处有什么
- 后端完全不用管前端数据怎么展示
- 前端只需根据接口文档写好接口即可
【最后前后端集成即可】
解耦合
- 打个比方;两兄弟的工资都共同存在一个银行卡里面,假如有一天,弟弟需要用钱,那么需要找哥哥商量一下,然后再取钱,这就是耦合;后来某天弟弟发现他自己的工资可以单独开一张银行卡存起来,这样等到急需用钱的时候就可以直接取,这就是解耦。
- 在软件工程中,模块之间是存在依赖关系就必然存在耦合,理论上说绝对的零耦合是做不到的,但可以通过一些现有的方法将耦合降至最低,降低耦合度即可理解为解耦。
- 在工作设计时候,尽量减少代码耦合,如果发现代码耦合,就要采取解耦技术,让数据模型,业务逻辑,视图显示三层之间彼此降低耦合,把关联度降到最低,不至于牵一发而动全身。原则上就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总两者不要直接交叉写。
解耦核心思想是【彼此独立,互不依赖】
什么是Spring Boot
SpringBoot是所有基于Spring开发的项目起点。SpringBoot整合了很多技术,提供了JavaEE的大整合。
特点:
-
部署变得简单:内置了三种Servlet容器,Tomcat、jetty,undretow,只需要一个Java的运行环境就可跑SpringBoot项目。
-
自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理的推测应用所需的bean并自动化他们。
-
是一个JavaWeb的开发框架。
-
简化开发,约定大于配置。
-
SpringBoot整合了所有框架,提供各种默认配置来简化配置,开箱即用。
-
没有沉余代码生成和XML配置要求。
导入数据
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, 'java实战', '张三');
INSERT INTO `book` VALUES (2, 'html进阶', '李四');
INSERT INTO `book` VALUES (3, 'javaWeb', '王五');
SET FOREIGN_KEY_CHECKS = 1;