Spring
Spring Sping MVC MyBatis介绍
Spring模块
Spring Core: 基础,可以说 Spring 其他所有的功能都需要依赖于该类库。主要提供 IoC 依
赖注⼊功能。
Spring Aspects : 该模块为与AspectJ的集成提供⽀持。
Spring AOP :提供了⾯向切⾯的编程实现。
Spring JDBC : Java数据库连接。
Spring JMS :Java消息服务。
Spring ORM : ⽤于⽀持Hibernate等ORM⼯具。
Spring Web : 为创建Web应⽤程序提供⽀持。
Spring Test : 提供了对 JUnit 和 TestNG 测试的⽀持。
Spring IOC AOP!
IOC:控制反转。即将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。目的是减低类与类之间的耦合度。
DI:依赖注入。为了实现控制反转(把有依赖关系的类加注解或者在xml文件中写好就相当于放到IOC容器中,解析出这些类的实例)
AOP:面向切面编程。把与业务无关但是又为业务所用部分给封装起来,比如事务处理,日志管理,有利于减少系统的重复代码,降低模块间的耦合度,增强程序的可拓展性和可维护性。例如计算器方法,日志与业务混合在一起,我们可以把日志代码全都抽离出去统一进行处理,只在方法中保留核心的业务代码。
Spring依赖注入的方式
四种,set方法,构造方法,静态工厂,实例工厂
Spring使用的两种代理方式
jdk代理:当类有实现接口时,通过实现接口的代理类,当调用方法时,会被invokeHandel拦截由该方法调用处理器来进行处理。
cglib代理:当类没有实现接口的时,通过该类加载器对类的字节码修改生成一个该类的子类,由子类提供方法的实现。
Spring事务管理方式
管理事务的方式有编程式事务,声明式事务(在配置文件中进行配置)
声明式事务分为基于XML,基于注解
Spring Bean生命周期
Bean的定义——Bean的初始化——Bean的使用——Bean的销毁
单例模式
Mybatis
MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。优点是避免了手写 JDBC代码和手动设置参数以及获取结果集。
Mybatis分页方式
数组分页,查询出所有数据再用list截取所需部分
SQL分页,拦截器分页,rowbounds分页
Mybatis一级缓存二级缓存
一级缓存是基于sqlSession默认开启的,在操作数据库的时候需要构造sqlSession对象,在对象当中有一个HashMap用于存储缓存数据。一级缓存的作用域是一个sqlsession内。当在同一个sqlSession中执行两次相同的SQL语句,第一次执行完毕后会把查询到的数据写到缓存中,而第二次会从缓存中获取数据,
二级缓存需要手动开启,作用域是mapper的同一个namespace,也就是多个session之间。
#{}和${}
Spring MVC
MVC工作流程
- 浏览器发送请求到前端控制器DispatcherServlet。前端控制器根据请求,调用处理器映射器HandlerMapping,解析该请求对应的处理器Handler并进行HandlerAdapter适配器处理
- HandlerAdapter适配器根据Handler调用真正的处理器,处理之后返回给前端控制器DispatcherServlet以一个ModelAndView对象,返回的数据对象和逻辑上的view
- 视图解析器ViewResolver根据逻辑上的view返回实际的view
- 前端控制器DispatcherServlet把返回的Model传给view进行视图渲染
- 把view返回给请求者也就是浏览器