SSM框架

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SSM框架

1什么是SSM框架?

spring + springmvc + mybatis

2S PRING容器

2.1这里有两个概念:SPRING 和SPRINGMVC。

那么这两个概念有什么区别?

spring 是IoC 和AOP的容器框架。

springmvc 是一种Web 框架。

2.2SPRING 主要功能是控制反转(I O C)和依赖注入(DI)。

控制反转是将控制权交给容器,由容器决定动态注入。调用类依赖于接口,而不依赖具体的实现类,实现了解耦合。

依赖注入是一种设计模式,是作为控制反转的一种实现模式(还有其他实现方式)。依赖注入就是将实例变量传入到调用类的对象中去。

2.3工厂模式:不关心接口是如何实现的,就可以创建该接口的实例对

象。

工厂模式的简单理解:通过接口实现解耦。通过耦合实现调用。

工厂模式的耦合:通过接口调用方法。接口是死的,对其方法的调用是死的。

工厂模式的解耦:调用哪一个目标实现类、怎样调用方法(对目标对象方法的实现)。

>>简化代码

要知道,工厂的目的之一就是创建目标对象(耦合)。而工厂的实现类的作用就是创建不同的目标接口的实现类的实例。

这个模式是固定的,那么我们可以让程序针对不同的目标接口的实现类

自动创建相应的工厂实现。(比较低级的做法可以是:在相应的目标接口的实现类中创建其对应工厂实现类对象的匿名内部类。)

2.4代理模式:通过代理可以实现对工厂实现类的统一管理

工厂模式无法对一系列工厂实现类进行统一的管理。代理模式可以解决这个问题。

工厂对象接口的实现类–实现了工厂对象的接口。

代理–实现了工厂对象接口。并提供了工厂接口注入。

工厂生产方法–提供了工厂实例的注入接口。

那么,可以这样:

工厂对象接口的实现类们注入到代理类中,代理类注入到工厂生产方法中。

其中,代理实现了工厂对象接口。那么它是怎样实现的?

其实,代理相当于一个平台,它提供了工厂接口的注入。它虽然实现了工厂接口,但它不自己调用其中的方法,而是通过注入的工厂接口的实现类去调用其中的方法。

2.5动态代理:通过反射动态地创建代理

由上可知:代理的作用就是实现对工厂实现类的统一管理。

什么统一管理呢?

就是将额外的操作从实现类们中分离,实现对实现类们的统一处理。

传统代理的局限性:要代理的目标对象的接口是死的,只能实现对一种目标对象进行统一管理(包括调用目标对象中的方法)。

但是我们知道,统一管理这些操作可以与目标对象分离开来,实现解耦。这就是动态代理。

动态代理是如何实现的呢?

动态代理类,通过实现InvocationHandler这样一个处理器接口,即可实现动态代理。

那么InvocationHandler处理器是怎么做的呢?

首先需要知道你要对哪一类或哪几类对象们(即接口列表)进行代理, 然后需要知道,你要对这些对象们进行怎样的代理(即动态代理类),

此外,还需要接口的类加载器。(类加载器的作用就是读取该类的字节码文件,创建该类的对象。因为反射获取构造器有局限性,此处不用反射创建该代理实现类)。

有了这三个条件, InvocationHandler 处理器就可以动态地创建相应的代理类对象。

2.6S PRING对AOP的实现

日后更新。事务管理器、通知、aop等(applicationContext.xml) 3MYBATIS 框架

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

3.1M YBATIS做了些什么?

Mybatis 是持久层框架,主要处理数据库的交互。

3.2怎么搭建M YBATIS框架

3.2.1逆向工程

逆向工厂根据单表生成 po类,mapper,mapping 映射文件。

3.2.2手动编写

po类、mapper、mapping文件。

根据dataBase 的映射关系编写实现对数据库的增、删、改、查等操作。

3.3PO类

主要包括数据库中各个表(table)的基本映射类;

基本映射类的扩展类(如 ItemsCustom)

自定义pojo包装类(如 ItemsQueryVo)

3.4MAPPER 映射接口

即dao 层。此层主要包含对数据库的操作(接口)。

3.5MAPPING 映射文件

这里主要包含了对数据库的具体操作

3.6SQL S ESSION F ACTORY

俗称session工厂,在mybatis中可以由SqlSessionFactoryBuilder创建。在spring容器中,可以由SqlSessionFactoryBean创建。

session 工厂的作用:

连接数据库,并扫描mybatis的配置文件和mapping映射文件。

这里使用了一个Singleton 设计模式。

SqlSessinFactory 的目的是什么?

dataBase1<-> sqlSession(S)

dataBase2<-> sqlSession(S)

dataBaseN<-> sqlSession(S)

不同的数据库则需要不同的SqlSessionFactory。而通常情况下,只专注于对一个dataBase进行操作,所以这里我们Singleton模式。

3.7SQL S ESSION

当获得一个session时,可以用它来执行映射语句,提交和回滚链接。当你不需要它时,可以关闭它。

如果与spring 整合,spring会将sqlSessionFacroy提供给mapperFactoryBean (提供操作数据库方法的的接口)。那

么,spring能够通过sqlSessionFacroy创建一个或多个线程安全的sqlSession,注入给mapperFactoryBean。

为此,不再需要直接使用sqlSession。

3.8MAPPER F ACTORY B EAN

spring 提供了一个动态代理的实现。这个动态代理类可以让你通过动态代理类创建不同mapper代理类,实现对mapper接口中方法(包含操作数据库方法)的调用。

相关文档
最新文档