首页 > 技术文章 > 三、面试准备-框架知识

xiaolangzhong 2018-12-03 01:33 原文

0、什么是Spring

Spring从功能上来说确实是一个框架。但是从本质意义上来说,Spring是一个库,一个Java库。
Spring的功能是提供了一个软件框架,这个框架能使软件之间的逻辑更加清晰,配置更加灵活。

Spring有两个重要思想:AOP(面向切面)和IOC(依赖注入)。

AOP:

AOP在Java里是利用反射机制实现的。也可以认为是利用动态代理实现的。不过动态代理也是通过反射机制实现的。

AOP的本质是在一系列纵向的控制流程中,把那些相同的子流程提取成一个横向的面。

写好一个通用的子流程,不用放到主流程中。在需要用到改子流程时,告诉Spring想要把这段代码加到什么地方,Spring就会帮你加过去。这样在写代码的时候就可以专注考虑主流程,使逻辑更清晰,编码更高效。

IOC:

当一个类的实例需要另一个类协助时,在传统的程序设计中,通常由调用者来创建被调用者的实例。现在,创建被调用者的工作不再由调用者来完成,创建被调用者的实例的工作由IOC容器来完成。因此叫控制反转。

Spring事务:

事务就是对一系列的数据库操作进行统一的提交或回滚操作,如果成功,则一起成功,如果中间有一条出现异常,则回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。

Spring中有自己的事务管理机制。可分为两类:编程式事务的和声明式事务。

Spring主要通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,能够减少代码量。

 

1、什么是MVC

MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开。将一个应用程序分为三个部分:Model,View,Controller。

Model(模型):业务逻辑、数据层
View(视图):表示层
Controller(控制器):接收请求==>调用模型==>根据结果派发页面并经过模型处理返回相应数据。

优点:
1、分工明确(开发人员可以只关注整个结构中的某一层):使用MVC可以把数据库开发、程序逻辑开发、页面开发分开。
2、低耦合(降低代码间的依赖程度):视图层和业务层分离。应用的业务流程或者业务规则改变只需要改动模型层。更改视图层不用更改模型层和控制器的代码。方便代码维护。
3、复用性高(利于各层逻辑的复用):比如 多个视图能共享一个模型。

缺点:
1、有时会导致级联的修改。这种修改尤其体现在自下而上的方向。如果在表示层中需要增加一个功能,为了保证其设计符合MVC结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。可以通过设计模式改善。
2、降低了系统的性能。如果不采用分层结构,很多业务可以直接访问数据库。采用MVC模式要通过中间层来完成。可以通过缓存机制改善。

 

2、SpringMVC工作原理

第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或注解进行查找

第三步:找到以后处理器映射器向前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器调用处理器适配器(HandlerAdapter)去执行处理器

第五步:处理器执行完毕给处理器适配器返回ModelAndView

第六步:处理器适配器向前端控制器返回ModelAndView

第七步:前端控制器请求视图解析器(ViewResplver)进行视图解析

第八步:视图解析器向前端控制器返回View

第九步:前端控制器对视图进行渲染

第十步:前端控制器向用户响应结果

前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
处理器映射器(HandlerMappering):根据URL去查找处理器。
处理器(Handle):需要程序员去写代码处理逻辑。
处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器。
视图解析器(ViewResplver):进行视图解析,对返回的字符串进行处理,可以解析成对应的页面。

 

3、简述Mybatis框架

Mybatis是支持订制化SQL、存储过程以及高级映射的持久层框架。

功能是:封装JDBC操作、利用反射实现Java类与SQL语句之间的相互转换。

Mybatis让程序员将主要精力放在SQL上,通过Mybatis提供的映射方式,自由灵活生成满足需要的SQL语句。

4、Struts2相关知识点

Struts2框架的核心配置文件就是struts.xml文件,该文件主要用来配置Action和请求之间的对应关系。Action映射就是将一个请求的URL映射到一个Action类,当一个请求匹配某个Action名称时,框架就使用这个映射来确定如何处理请求。

Struts2框架要想执行,所有的请求都要都需要经过这个前端控制器(核心过滤器),所以要配置这个核心过滤器。在web.xml中配置。

Struts2的执行流程:

从客户端发送请求过来,先经过前端控制器/核心过滤器(StrutsPrepareAndExecuteFilter),拦截器执行完成以后,就会执行目标Action,在Action中返回一个结果视图,根据Struts.xml中的Result配置的页面进行页面的跳转。

5、Hibernate工作原理及为什么要用?

工作原理:

1.读取并解析配置文件 
2.读取并解析映射信息,创建SessionFactory 
3.打开Sesssion 
4.创建事务Transation 
5.持久化操作 
6.提交事务 
7.关闭Session 
8.关闭SesstionFactory

为什么要用:

1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码

2、hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系

6、JDBC hibernate 和 ibatis 的区别

jdbc:手动
手动写sql
delete、insert、update要将对象的值一个一个取出传到sql中,不能直接传入一个对象。
select:返回的是一个resultset,要从ResultSet中一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。
ibatis的特点:半自动化
sql要手动写
delete、insert、update:直接传入一个对象
select:直接返回一个对象
hibernate:全自动
不写sql,自动封装
delete、insert、update:直接传入一个对象
select:直接返回一个对象

7、SpringBoot

https://www.jianshu.com/p/63ad69c480fe/

推荐阅读