SSM框架整合总结
来源:互联网 发布:mac docker vs pd 编辑:程序博客网 时间:2024/06/04 21:40
关于ssm整合的相关总结:
spring + springMVC + mybatis1.持久层--->mybatis:通过Spring 来管理持久层的 Mapper (相当于 dao 接口),来完成对数据库的操作。
首先我们回顾一下,在单独使用mybatis的时候,在其配置文件中有哪些必须的配置!①mybatis.xml全局配置文件
由于该核心配置文件是用来操作底层数据库的,故而必须会有一些登陆数据库、事务控制等操作的相关配置。
a.配置连接数据库的数据源DataSource--->(包括连接数据的url,driver,username,password等等)
b.配置操作数据库的事务控制TransactionManager--->(例如:<transactionManager type="JDBC" />)
c.连接mapper.xml配置文件--->(例如:<mapper resource="...... "/>)
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.简单配置
<resultMap type="" id="">
<id property="" column="" /> //主键配置
<result property="" column="" /> //其它非主键配置
<result property="" column="" />
......
</resultMap>
b.一对一关系:
<resultMap type="" id="" extends="">
<association property="" javaType=""> //注意它使用的是“javaType”
<id property="" column="" />
<result property="" column="" />
<result property="" column="" />
......
</association>
</resultMap>
b.一对多关系:
<resultMap type="" id="" extends="">
<collection property="" ofType=""> //注意它使用的是“ofType”
<id property="" column="" />
<result property="" column="" />
<result property="" column="" />
......
</collection>
</resultMap>
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”)
例如下:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>加载/WEB-INF/spring-mvc/目录下的所有XML作为Spring MVC的配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc/*.xml</param-value>
<!-- 若我们要实现加载所有在“类路径”目录下的文件,则需要在其前面加classpath。则上面可以写成:
<param-value>classpath:/spring-mvc/*.xml</param-value>
-->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
②处理器映射器--->HandlerMapping(处理器映射器的功用是根据请求的url查找Hanler)
之前使用的标签为:<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
之后,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"/>
<!-- 注意:若使用include-filter去定制扫描内容,要在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..*"/>
<!-- 注意:在use-default-filters="false"的情况下,exclude-filter是针对include-filter里的内容进行排除 -->
<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...)故而需要视图解析器来根据逻辑视图名来进行解析。
例如下配置可以实现对视图名前缀后缀的自动解析:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" prefix="/jsp/" suffix=".jsp" />
——————————————————————————————————————————————————————
分析完上面各自独立的部分,那么我们来看看哪些部分可以实现整合。
1.持久层--->mybatis:
①mybatis.xml全局配置文件
a.配置连接数据库的数据源DataSource--->显然spring也可以实现该配置,故而可以交给spring来管理。
b.配置操作数据库的事务控制TransactionManager--->spring可以实现
c.连接mapper.xml配置文件--->若使用mybatis的注解开发,则该配置也可以省略,但是若涉及复杂的SQL语句,则注解开发并不能达到很好的效果,则对复杂类型的SQL,我们建议使用xml开发,故而,在实际的开发中最好对两者进行配合使用。
d.配置sqlSessionFactory---->可以让spring将sqlSessionFactory自动注入容器即可。
②mapper.xml映射配置文件
该文件视需求而定,若使用mybatis的注解,则该文件可以省略。而若使用xml文件开发,则需要对其进行配置。
2.业务层--->spring:
本身是spring框架,配置无需改动。
3.表现层--->springMVC:
springmvc是springframework的一部分,故而配置无需改动。
由此我们可见,改动最大部分来自与mybatis与spring的整合部分。
////end
0 0
- SSM框架整合总结
- SSM:简单SSM框架整合
- SSM框架整合
- ssm框架整合
- SSM框架整合例子
- SSM框架整合
- SSM框架整合
- ssm框架整合
- SSM框架整合
- SSM 框架整合
- ssm框架总体整合
- SSM框架整合
- SSM 框架整合案例
- SSM框架整合
- SSM框架整合
- SSM框架整合
- SSM框架整合
- ssm框架整合开发
- 合并果子
- HTTP 网络请求原理
- 简单句的核心构成
- 机器学习基本概念梳理
- react如何在组件中获取路由参数?this.props.params.id
- SSM框架整合总结
- vc6.0使用Json-cpp的配置方法
- Keras 更新指令
- linux下的 tar.gz文件和.rpm文件有什么最大的区别?
- Android 程序运行到5.0系统闪退和三星s7(6.0系统)闪退
- shell-exec
- iOS10适配系列教程(二):Security 安全和版本判断
- lua与c++交互
- mysql基础---字段管理(三)