SSM框架整合总结

关于ssm整合的相关总结:

1.持久层--->mybatis:通过Spring 来管理持久层的 Mapper (相当于 dao 接口),来完成对数据库的操作。
首先我们回顾一下,在单独使用mybatis的时候,在其配置文件中有哪些必须的配置!
①mybatis.xml全局配置文件
由于该核心配置文件是用来操作底层数据库的,故而必须会有一些登陆数据库、事务控制等操作的相关配置。

a.配置连接数据库的数据源DataSource--->(包括连接数据的url,driver,username,password等等)
b.配置操作数据库的事务控制TransactionManager--->(例如:)
c.连接mapper.xml配置文件--->(例如:)
d.配置sqlSessionFactory---->(为何我要将sqlSessionFactory写在这里呢?因为我们在单独使用mybatis的时候,是单独创建该对象的。
代码如下所示:
String resource = "mapper.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(reader);
由 sqlSessionFactory 创建 sqlSession ,再有 sqlSession 操作数据库发出SQL进行 CURD,但是我们知道,在进行 spring 与 mybatis 整合的时候,这种使用“new”来创建对象的方法将不再符合 spring 框架的思想了!)

②mapper.xml映射配置文件
该配置文件主要是配置SQL映射语句。其中包括简单关系与复杂关系。
比较常用的关系配置如下:
a.简单配置

//主键配置
//其它非主键配置

......

b.一对一关系:

//注意它使用的是“javaType”



......

b.一对多关系:

//注意它使用的是“ofType”



......

2.业务层--->spring:通过Spring 来管理业务层的 service (通过调用 mapper 接口),通过spring的IOC和DI来实现完全的面向接口编程,降低类之间的耦合,并且使用spring AOP来控制事务处理。
使用比较多的是包的自动扫描,与自动注入。配合@Autowired @Resource @component @Repository @Service @Controller注解的使用。

3.表现层--->springMVC:通过Spring 来管理表现层的 Handler (通过调用 Service 接口),来实现流程跳转的控制。
由于springMVC是springframework 框架的组成部分,故而,只要配置其本身所需要的配置即可。那么springMVC有哪些本身需要的配置呢?
由springMVC 运行的流程控制图中我们可以看到其中几个比较重要的“器”,它是我们配置的关键。
①前端控制处理器--->DispatcherServlet
它是springMVC运行的中央控制器,在web.xml中配置。它的作用是指定springMVC配置文件的位置,并在serlet-mapping中指定过滤条件(一种是“/”,一种类似“.action”)
例如下:

dispatcher
org.springframework.web.servlet.DispatcherServlet

加载/WEB-INF/spring-mvc/目录下的所有XML作为Spring MVC的配置文件
contextConfigLocation
/WEB-INF/spring-mvc/
.xml

</init-param>
<load-on-startup>1</load-on-startup>
dispatcher *.html

②处理器映射器--->HandlerMapping(处理器映射器的功用是根据请求的url查找Hanler)
之前使用的标签为:
之后,HandlerMapping 与 HandlerAdapter合并为一个功能更为强大的标签:
mvc注解驱动 mvc:annotation-driven</mvc:annotation-driven>。虽然他们两个已经合并,可是我们需要知道,有些功能其实在本质上还是由HandlerMapping来实现的,譬如说在springMVC中实现拦截器。

③处理器适配器--->HandlerAdapter(处理器适配器的作用是按照特定的规则去执行Handler)
同处理器映射器一样,处理器适配器总是与之一起配对出现。而如今它已经被“MVC注解驱动”mvc:annotation-driven</mvc:annotation-driven>标签所替代,但是我们都知道,有关于”参数绑定“与“Validation校验”这些功能的实现都与HandlerAdapter相关联的。

④处理器--->Handler
@Controller注解 与 @RequestMapping() 注解
由于注解开发带来越来越多的便利,大家都越来越习惯与这种简介便利的开发方式。
使用注解开发,自然需要让spring容器能扫描到该注解,这样才能识别出相应的“Handler”。使用spring的包自动扫描标签:
<context:component-scan base-package="com.minx.crm.web.controller"/>
有时候也可以在其中添加过滤条件,使其效率更高:
<context:component-scan base-package="com.controller" use-default-filters="false"/>

        <!-- annotation是对注解进行扫描 -->
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/> 
        <!-- assignable是对类或接口进行扫描 -->
        <context:include-filter type="assignable" expression="com.wjx.betalot.performer.Performer"/>
         <context:include-filter type="regex" expression="com.baobaotao.service..*"/> 
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:exclude-filter type="assignable" expression="com.wjx.betalot.performer.impl.RainPoem"/>
        <context:exclude-filter type="regex" expression=".service.*"/> 

</context:component-scan>

⑤视图解析器--->ViewResolver
由于springmvc支持多种视图(例如jsp、pdf、excel、freemark...)故而需要视图解析器来根据逻辑视图名来进行解析。
例如下配置可以实现对视图名前缀后缀的自动解析:

——————————————————————————————————————————————————————
分析完上面各自独立的部分,那么我们来看看哪些部分可以实现整合。
1.持久层--->mybatis:

2.业务层--->spring:

3.表现层--->springMVC:

////end

posted @ 2016-12-06 14:14  Hosens  阅读(4092)  评论(0编辑  收藏  举报