1、什么是Spring boot?
Spring boot其实是Spring框架大家庭中的新的成员,它可以简化应用程序的开发。通过简化Spring众多框架中所需的大量且繁琐的配置文件(xml),也可以说去xml化。
2、什么是Starter?
Starter主要用来简化依赖。比如我们做Spring MVC时要引入日志文件,那么就需要找到log4j的版本,然后引入,有了starter以后,我们就可以不用这么麻烦了,Spring boot会自动引入。
3、什么是Spring MVC?
Spring MVC是基于MVC架构的一个Spring模块,无需中间整合层来整合。主要用来简化应用程序的开发,属于表现层的框架。
4、请你详细讲述一下Spring MVC的运行流程?
1. 用户发送请求到前端控制器DispatcherServlet
2. 前端控制器调用处理器映射器HandlerMapping,请求获取Handler
3. 处理器映射器根据具体url生成处理器以及处理器拦截器,返回到前端控制器
4. 前端控制器通过调用处理器适配器HandlerAdapter,请求执行handler
5. 处理器适配器执行handler
6. 执行后返回ModelAndView
7. 处理器适配器再将ModelAndView返回给前端控制器
8. 前端控制器将ModelAndView传给视图解析器ViewResolver解析
9. 返回具体View给前端控制器
10.渲染视图
11.响应用户
5、什么是Mybatis?
1.Mybatis是一个半ORM(对象关系映射)框架,内部封装了JDBC、加载驱动、创建连接等过程。使得开发者只需要关心如何而编写SQL语句,可以严格控制sql执行性能,灵活度高。
2.Mybatis主要使用XML或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免手写大量JDBC代码和手动设置参数以及获取结果集。
优点: 1.基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响
2.与JDBC相比,减少了50%以上的代码,还有不需要手动开关连接
3.可以很好的和数据库兼容
4.可以很好地和Spring集成
缺点: 1.当字段多、关联表多时,对开发人员的SQL编写功底有一定要求
2.因为SQL语句依赖于数据库,导致数据库移植性差,一旦更改数据库就会造成很大影响。
6、#{}和${}的区别是什么?
#{} 是预编译处理,Mybatis在处理时,sql语句会将#{}替换为 ?号,调用PreparedStatement的set方法来赋值,有效防止SQL注入,提高系统安全性
$ {}是字符串替换,Mybatis在处理时,sql会将${}替换为变量的值。
7、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis仅支持association关联对象和collection关联集合对象的延迟加载。association指的是一对一,collection指的是一对多。延迟加载的原理是使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法。
8、Mybatis的一级、二级缓存
1. 一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session
flush 或close之后,该Session中的Cache被清空,默认打开一级缓存。
2. 二级缓存与一级缓存机制相同,默认采用PerpeCache的HashMap本地缓存,不同在于其存储作用域为
Mapper文件的namespcae,并且可自定义存储源,如EhCache。默认不打开二级缓存。