今天有幸复习了一番五大框架,在此将五大框架的执行原理,在此总结以作小记!!!
-
Hibernate执行原理
执行原理:
1.读取并解析核心配置文件
2.Configuration负责读取并创建映射信息,创建SessionFactory会话工厂。
3.SessionFactory会话工厂构建Session对象。
4.Transaction开启事务。
5.进行可持久化操作。
6.Transaction提交事务。
7.关闭Session及SessionFactory。
持久化对象的三种状态:
瞬时态:不存在唯一标识OID , 与session未建立关联,未在数据库中存在。
持久态:存在唯一标识OID , 与session已建立关联,在数据库中存在;
当属性发生改变时,清理缓存时会自动和数据库同步。
脱管(离线)态:不存在唯一标识OID , 与session不存在关联,但在数据库中存在。
-
Spring执行原理
要说执行原理很重要的两点:AOP面向切面编程 及 IoC控制反转
AOP术语:
Joinpoint(连接点):所谓连接点是指那些可能被拦截到,可以被增强的点。
在spring中,这些点指的是方法, 因为spring只支持方法类型的连接点。
Pointcut(切入点): 实际被增强的方法。
Advice(通知/增强):
所谓通知是指拦截到Joinpoint之后所要做的事情,即为方法添加的某些指定的业务逻辑;
通知分为 前置通知, 后置通知, 异常通知, 最终通知, 环绕通知。
Aspect(切面): 将通知/增强添加到切入点的过程,称之为切面。
Target(目标对象):要增强的类
Weaving(织入):是把增强应用到目标的过程;即把Advice 应用到Target的过程
Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类
Introduction(引介):
引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地
添加一些方法或Field。
AOP使用场景:记录系统操作日志
AOP实现机制:采用横向抽取机制实现
(1)之前web阶段,写过BaseServlet,采用纵向机制:Servlet继承BaseServlet实现
(2)使用动态代理增强类里面的方法
a.有接口情况:创建接口实现类代理对象
b.没有接口情况:创建增强方法所在类的子类代理对象
IoC机制: xml配置文件+dom4j+工厂设计模式+反射; 让对象不通过new来创建,把对象创建交
给spring管理,利用Java的反射机制,在运行时动态的去创建、调用对象。
DI 依赖注入:基于IoC控制反转,创建对象过程中,向属性设置值。
-
Struts2执行原理
-
执行原理:
1. 通过浏览器发起请求
2. 到达框架入口web.xml文件中的前端过滤器
3. 执行默认的拦截器栈defaultStack
4.利用dom4j对xml文件的解析及反射技术来得到action的全路径名称
5. 通过action全路径名称找到对应的Action类
6. 执行默认的excute方法获取其他自定义方法
7. 执行service, dao获得数据并将数据返回到action
8. 根据action返回的字符串找到struts2.xml中result标签中对应的页面并跳转
9. 根据Tomcat中的JSP-API.jar 将JSP页面中的EL表达式,元素标签等转成HTML页面返回,展示到浏览器
-
SSH框架整合原理
整合过程:
第一步 导入jar包
第二步 搭建struts2环境
(1)创建action,创建struts2.xml配置文件,配置action
(2)配置struts2的过滤器
第三步 搭建hibernate环境
(1)创建实体类
(2)配置实体类和数据库表映射关系
(3)创建hibernate核心配置文件,引入映射配置文件
第四步 搭建spring环境
(1)创建spring核心配置文件
(2)让spring配置文件在服务器启动时候加载,配置监听器 及 指定spring配置文件位置
第五步 struts2和spring整合
(1)把action在spring配置(action多实例的)
(2)在struts2.xml中action标签class属性里面写 bean的id值
第六步 spring和hibernate整合
(1)把hibernate核心配置文件中数据库配置,在spring里面配置
(2)把hibernate的sessionFactory在spring配置
第七步 在dao里面使用hibernateTemplate
(1)在dao注入hibernateTemplate对象
(2)在hibernateTemplate对象中注入sessionFactory
第八步 配置事务
-
Mybatis执行原理
执行原理:
1、Mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了Mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
(一句话总结:加载核心配置文件,同时在其中配置mapping映射文件)
2、通过Mybatis环境等配置信息构造SqlSessionFactory即会话工厂。
(一句话总结:构建SqlSessionFactory会话工厂)
3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
(一句话总结:通过SqlSessionFactory会话工厂创建SqlSession对象)
4、Mybatis底层自定义了Executor接口操作数据库,Executor接口有两个实现,一个是基本实现、一个是缓存实现。
(一句话总结:自定义Executor接口并实现,来操作数据库)
5、Mapped Statement也是Mybatis一个底层对象,它包装了Mybatis配置信息及sql映射信息等。
mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
(一句话总结:通过mapper.xml文件生成对应的一个Mapped Statement对象)
6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,
Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是
jdbc编程中对preparedStatement设置参数。
(一句话总结:将Mapped Statement对象中的输入参数信息映射到sql,对应于jdbc中的为
preparedStatement设置参数)
7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,
Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于
jdbc编程中对结果的解析处理过程。
(一句话总结:将Mapped Statement对象中的输出参数信息映射到java对象,
对应于jdbc中的对结果的解析处理)
-
SpringMVC执行原理
执行原理:
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)
一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户