聊聊框架基本相关概念,让你世界不在渺茫

184 阅读9分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

前言

十五又和大家见面咯,春节将近,提前祝掘金友们虎年大吉大利,虎虎生威。

image.png

三层架构

在我们介绍有关于框架的一些相关概念之前,我们首先要先来回顾一下在 Web 阶段就接触过经典的三层架构,先来回顾一下这个三层架构。

image-20220125143436091

大家现在来看这张图,这张图中的服务器端存放的就是我们后台所编写的一个代码。我们在进行后台代码编写的时候,是不是就会划分成一个经典的三层架构,也就是表现层、业务层和持久层。

首先大家要去知道为什么我们在进行后台代码编写的时候,要进行这么三层架构的一个划分呢?其实它是蕴含了一个高内聚低耦合的思想,是要把一个复杂的任务进行简单拆分,拆分成三层。每一层都有自己具体要去执行的一个逻辑,这样的话方便进行后期的维护以及问题的排查。

那既然我们说每一层都有自己要具体执行的一个逻辑,那表现层它具体要执行什么逻辑呢?我们通常在表现层(也就是在 Web 层),我们要做的是不是就进行参数的接收与封装以及业务层方法的调用和视图的渲染与跳转。这个是在表现层我们要做的。

而业务层要做什么事儿呢?顾名思义业务层那么主要就是来去编写一些关于业务逻辑的相关代码以及去调用层方法。

持久层通常就是对数据库数据进行 CRUD,也就是去完成增删改查。

以后大家就会知道,在这三层代码编写的过程中,那一层的代码会编写起来比较复杂。其实就是这个业务层。

其实有关于代码的编写都不难,难的是什么?难的就是业务逻辑的处理。而业务逻辑的处理通常都是要写在业务层的。所以以后大家在编写代码的过程中就会发现,其实业务层才是编写起来相对比较复杂的那一层。

既然分成了三层,它们之间也是存在一个调用关系的。这个调用关系就是表现层调用业务层,业务层调用持久层。既然存在调用关系,势必也会存在一个参数的传递问题。

表现层在调用业务层时,是不是要进行参数的一个传递。如果我们在表现层接收到前台传递过来的参数有很多,我们通常要怎么做呢?我们通常要把多个参数封装成一个 JavaBean,也就封装成一个实体对象。

为什么要进行一个实际对象的封装呢?就是因为如果我们在进多个参数的传递的时候,比较麻烦,所以我们可以把多个参数进行打包,进行一个封装,把它封装成一个实体对象。这样方便进行参数的一个传递。

为什么要再介绍框架的相关概念之前,先来回顾一下三层架构。这是因为要跟大家去说明,我们即将去学习的框架,它其实都是针对于这每一层的一种技术解决方案。比如,我们即将要学习的 Mybatis,它就是一个持久层的框架,也就是应用在持久层的一个基础。

什么是框架

我们现在回顾完三层架构之后,我们接下来就要去说一下关于框架的这些相关概念了。

什么是框架呢?框架就是一套规范。框架既然是规范,我们在使用框架的时候,也要去遵守框架它所规定的一些约束。

什么意思?怎么去理解呢?我们举一个生活中的例子。

我们现在要举办一个文艺演出晚会,就各个选手都要进行文艺演出。对于各个选手来说,他们所共同要用到的一个东西是什么?是不是一个舞台,每一个选手他在进行才艺表演的时候,是不是都要用到舞台啊?对于舞台来说,所有选手都要用到它。这时舞台就是一个通用的。可以先让别人把这个舞台搭建好,各个选手就可以在搭建好的这个舞台上去专心关注自己的一个表演内容。只不过各个选手他们在去使用这个舞台的时候,就要去遵守这个舞台它的一个使用规范。比如它的灯光在哪儿,它的一个升降机在哪儿。这些其实就是属于我们在使用这个舞台时所要去遵守一些约束和规范。

大家应该也可以理解,作为这个通用的舞台,各个选手他是不用再关心的,他只需要去关心的就是他自己的一个表演内容。而舞台的这个搭建由别人来完成。我们在此基础之上去完成我们想要去做的事。

对于框架怎么去理解呢?我们就可以把它理解成一个半成品软件。大家都知道在编程领域,框架是一种抽象的表现形式。它其实就是把一些通用的一些代码进行了一个封装。所以当别人做好框架之后,我们现在作为开发人员,我们只需要在这个框架的基础之上再进行我们具体业务逻辑代码的编写即可。

为什么要使用框架

为什么我们现在要去使用框架呢?那通过刚刚的介绍,大家应该也能够知道,就是因为它对一些通用的内容进行了封装。当然框架的强大之处有很多。

现在有的同学可能会有疑惑,什么疑惑呢?我们在 Web 阶段,Web 层采用 Servlet 来实现,持久层使用 JDBC 来实现,同样可以完成功能的开发。但是我们在使用单原生的 Servlet 以及原生的 JDBC 完成开发的时候,其实它是存在一些不方便的地方的。

存在不方便呢?比如在使用 Servlet 进行开发,使用 Servlet 要进行参数获取,怎么获取的呢?我们是不是调用了 request.getParameter() 方法, 如果参数有很多,我们是不是要调用request.getParameterMap() 方法。在获取到前台所传递到后台的这些所有参数之后,我们为了方便参数的一个传递,我们通常是不是还要再去借助 BeanUtils 这样的工具类,把接收到的这些参数给手动封装成一个实体对象,再进行后续的一个传递。所以整个过程其实相对来说比较麻烦。

而我们再说我们在持有层,如果使用原生的 JDBC 操作数据库数据,其实也是存在一些问题的。比如像数据库连接频繁的获取释放、以及我们编写的一些 SQL 语句存在硬编码、以及手动封装返回结果集等等问题。

我们现在要去使用框架了,其实目的就是为了去解决这些问题,框架本身就进行了一个封装。并且大部分的框架底层都会用到反射、动态代理这样的一个机制,它会把代码实现通用性。我们使用框架能够大大的提高我们开发效率。这个就是我们为什么要去使用框架,说白了就是为了方便开发。

常用的框架

我们大概知道框架是框架是什么,以及为什么使用框架,使用框架能够带给我们什么好处之后,我们再来介绍一些常用的框架。

我们在进行后台代码编写是,分成了经典的一个三层架构。在介绍框架的时候,我们就可以按照三层来介绍。

三层架构分别是表现层、业务层以及持久层。但是我们在介绍相关框架的时候,我们不能直接说成业务层框架,应该是全栈框架、变现层框架以及持久框架。

应用在 Web 层常见的框架有哪些呢?比如 struts2。struts2 在几年前还是比较火,只不过现在慢慢的不怎么流行了。如果有入职是国企,国企它的技术没有迭代更新那么快的话,你可能还会去用到 Struts2 框架。现在比较主流是 Spring MVC 框架。

业务层经常会用到的框架是 Spring,而 Spring 我们不能单纯的说它是一个业务层框架。因为 Spring 它是一个全栈框架。这时有人会疑惑,疑惑哪个点呢?什么是全栈。全栈的意思表示,该框架它在每一层都有自己的一个解决方案。Spring 在每一层都有具体的一个解决方案,把这样的框架就称为全栈框架。

持有层框架。有一个框架叫 Hibernate 框架,在几年前比较流行的一个全自动框架。而现在比较流行的是 Mybatis 以及 Spring JDBC。我们即将去学习的 Mybatis,它就是一个持久层框架。

以前我们开发用到的框架是哪一套框架呢? SSH 即 Struts2 + Spring + Hibernate,这套框架有很多人应该没有用过吧。

几年前,SSH 也是一套比较流行的开发框架。而现在就是变成了 SSM,即 Spring + Spring MVC + Mybatis。所以我们现在主要来学习的就是 SSM。

大家只需要能够去知道别人说 SSH 是什么即可。

下一次分享的主题是:JDBC 问题分析

\