




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSM 框架 1 什么是 SSM 框架? spring + springmvc + mybatis 2 SPRING 容器 2.1 这里有两个概念:SPRING 和 SPRINGMVC。 那么这两个概念有什么区别? spring 是 IoC 和 AOP 的容器框架。 springmvc 是一种 Web 框架。 2.2 SPRING 主要功能是控制反转(IOC)和依赖注入 (DI)。 控制反转 是将控制权交给容器,由容器决定动态注入。调用类依赖于接 口, 而不依赖具体的实现类,实现了解耦合。 依赖注入 是一种设计模式,是作为控制反转的一种实现模式(还有其他 实现方式)。依赖注入就是将实例变量传入到调用类的对象中去。 2.3 工厂模式:不关心接口是如何实现的,就可以创建该接口的实例对 象。 工厂模式的简单理解:通过接口实现解耦。通过耦合实现调用。 工厂模式的耦合:通过接口调用方法。接口是死的,对其方法的调用是 死的。 工厂模式的解耦:调用哪一个目标实现类、怎样调用方法(对目标对象 方法的实现)。 简化代码 要知道,工厂的目的之一就是创建目标对象( 耦合)。而工厂的实现类的作用就是创 建不同的目标接口的实现类的实例。 这个模式是固定的, 那么我们可以让程序针对不同的目标接口的实现类 自动创建相应的工厂实现。(比较低级的做法可以是:在相应的目标接口的实现类 中创建其对应工厂实现类对象的匿名内部类。) 2.4 代理模式:通过代理可以实现对工厂实现类的统一管理 工厂模式无法对一系列工厂实现类进行统一的管理。代理模式可以解 决这个问题。 工厂对象接口的实现类 实现了工厂对象的接口。 代理 实现了工厂对象接口。并提供了工厂接口注入。 工厂生产方法 提供了工厂实例的注入接口。 那么,可以这样: 工厂对象接口的实现类们注入到代理类中,代理类注入到工厂生产方法 中。 其中,代理实现了工厂对象接口。那么它是怎样实现的? 其实,代理相当于一个平台,它提供了工厂接口的注入。它虽然实现了 工厂接口,但它不自己调用其中的方法,而是通过注入的工厂接口的实 现类去调用其中的方法。 2.5 动态代理:通过反射动态地创建代理 由上可知:代理的作用就是实现对工厂实现类的统一管理。 什么统一管理呢? 就是将额外的操作从实现类们中分离,实现对实现类们的统一处理。 传统代理的局限性:要代理的目标对象的接口是死的,只能实现对一种 目标对象进行统一管理(包括调用目标对象中的方法)。 但是我们知道,统一管理这些操作可以与目标对象分离开来,实现解耦。 这就是动态代理。 动态代理是如何实现的呢? 动态代理类,通过实现 InvocationHandler 这样一个处理器接口, 即可实现动态代理。 那么 InvocationHandler 处理器是怎么做的呢? 首先需要知道你要对哪一类或哪几类对象们(即接口列表)进行代理, 然后需要知道,你要对这些对象们进行怎样的代理(即动态代理类), 此外,还需要接口的类加载器。(类加载器的作用就是读取该类的字节 码文件,创建该类的对象。因为反射获取构造器有局限性,此处不用反 射创建该代理实现类)。 有了这三个条件, InvocationHandler 处理器 就可以动态地创建 相应的代理类对象。 2.6 SPRING 对 AOP 的实现 日后更新。事务管理器、通知、aop 等(applicationContext.xml) 3 MYBATIS 框架 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久 层框架。 3.1 MYBATIS 做了些什么? Mybatis 是持久层框架,主要处理数据库的交互。 3.2 怎么搭建 MYBATIS 框架 3.2.1 逆向工程 逆向工厂根据 单表生成 po 类,mapper,mapping 映射文件。 3.2.2 手动编写 po 类、mapper、mapping 文件。 根据 dataBase 的映射关系编写实现对数据库的增、删、改、查等操 作。 3.3 PO 类 主要包括 数据库中各个表(table)的基本映射类; 基本映射类的扩展类(如 ItemsCustom) 自定义 pojo 包装类(如 ItemsQueryVo) 3.4 MAPPER 映射接口 即 dao 层。此层主要包含对数据库的操作(接口)。 3.5 MAPPING 映射文件 这里主要包含了对数据库的具体操作 3.6 SQLSESSIONFACTORY 俗称 session 工厂,在 mybatis 中可以由 SqlSessionFactoryBuilder 创建。在 spring 容器中,可以由 SqlSessionFactoryBean 创建。 session 工厂的作用: 连接数据库,并扫描 mybatis 的配置文件和 mapping 映射文件。 这里使用了一个 Singleton 设计模式。 SqlSessinFactory 的目的是什么? dataBase1 sqlSession(S) dataBase2 sqlSession(S) dataBaseN sqlSession(S) 不同的数据库则需要不同的 SqlSessionFactory。而通常情况下, 只专注于对一个 dataBase 进行操作,所以这里我们 Singleton 模 式。 3.7 SQLSESSION 当获得一个 session 时,可以用它来执行映射语句,提交和回滚链接。 当你不需要它时,可以关闭它。 如果与 spring 整合 ,spring 会将 sqlSessionFacroy 提供给 mapperFactoryBean (提供操作数据库方法的的接口)。那么, spring 能够通过 sqlSessionFacroy 创建 一个或多个线程安全的 sqlSession ,注入给 mapperFactoryBean。 为此,不再需要直接使用 sqlSession。 3.8 MAPPERFACTORYBEAN spring 提供了一个动态代理的实现。这个动态代理类可以让你通过 动态代理类创建不同 mapper 代理类,实现对 mapper 接口中方法(包 含操作数据库方法)的调用。 注意,这个 sqlSession 是线程安全的,而且可以根据 spring 事务 配置自动提交、回滚和关闭 session。 3.9 SERVICE 层 mapperFactoryBean 创建 mapper 代理类。 service 层调用 mapper 代理类完成各种事务操作。 4 SPRINGMVC 框架 springmvc 是一种 web 层的框架。其目的是将 web 层的 Controller 与 页面的 View 联系起来。 4.1 WEB 层怎么解析? 页面部署到 tomcat 容器中,tomcat 容器获取 web.xml 中 DispatcherServlet (前端控制器),然后使用 DispatcherServlet 去解析页面。 web.xml 除了前端控制器(Servlet),还有监听器、Filter 过滤器 等。比如 post 请求乱码过滤器。 4.2 DISPATCHERSERVLET 前端控制器 前端控制器,并不自己去解析 web View 页面。 而是读取 springmvc-servlet.xml 配置文件 ,获取里面的 处理器 适配器和处理器映射器,视图解析器,异常处理器等。通过他们来处理 View。 前端控制器是怎么实现的? 4.2.1 定义了很多解析器、适配器和映射器 的成员变量,此外还有资 源配置文件的成员变量。 它定义这么多变量,目的就是方便自己调用和提供给别的类调用。 4.2.2 为了方便自己调用,它必须对这些定义好的成员变量进行赋值: 1.通过 setter()方法注入。(public 由其他类调用) 让其实现类去设置 true 或 false。比如此处的 ThrowException 的默认值就是 false。 2.通过 initxxx 方法注入。(然后在另一个地方直接调用它, private 不需要重写或者被调用) 这里通过读取配置文件 applicationContext,对存在的成员变量初 始化。 具体操作:使用 BeanFactoryUtils 将 context 与成员变量 HandlerMapping 映射成 bean 对象。 如果该 bean 对象不为空 ,那么使用 getBean()方法生成 HandlerMapping。 3.提供了部分解析器 getter 方法,以便其他类可以获取该成员变量。 4.3 处理器映射器 (HANDLERMAPPING) 作用:就是将 url 与 controller 或者 controller 方法 相互映射。 类似于 servlet 的一种拦截器,拦截到此 url 就交给该项目相应的 controller 方法处理。形成一种映射关系。 许多这样的映射关系就形成了 handlerMappings。 4.4 处理器适配器 (HANDLERADAPTER) 适配器模式: 保持了原接口的完整性。 减少了不必要的实现,提高代码的编写效率。 拥有自己独特的实现方式。(耦合) 提供一个接口,可以处理一系列该接口实现类。或者可以被继
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西餐厅服务员技能培训资料
- 2025批量办公用品买卖合同样本
- 2025设备更新借款合同范本
- 2025汽车租赁合同生效条件有哪些
- 2025短期劳动合同电子版模板
- 2025劳动合同的法定条件
- 2025年的北京市房屋租赁合同
- 2025标准技术转让合同
- 2025年北京市租房合同范本
- 2025纸箱购销合同范本
- 《传奇歌后邓紫棋》课件
- 2025年度农业补贴补偿合同范本3篇
- 化工厂节能降耗培训
- DB33T 1141-2017 保温装饰夹心板外墙外保温系统应用技术规程
- 《铁路旅客运输规程》考试复习题及答案
- 2024年北京市垂杨柳医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 胸痛课件教学课件
- 风管补漏施工方案
- 2024人教版七年级地理上册 第四章 天气与气候 单元测试(含解析)
- 林业安全生产知识培训
- 生产车间厂房及配套设施施工组织设计
评论
0/150
提交评论