SpringMVC+Spring+Mybatis总结

第一部分:分析

web.xml中的配置

SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合。

当项目启动的时候,需要服务器为SpringMVC创建前端控制器,前端控制器就是一个Servlet,即DispatcherServlet,所以需要在web.xml配置该Servlet,由于该对象的创建需要初始化参数,而这些参数是通过applicationcontext-mvc.xml文件进行配置的,所以在创建DispatcherServlet的时候需要指定读取该文件的路径,这需要通过该对象的初始化参数进行配置。

我们在服务器启动的同时又需要启动Spring容器,所以就需要在web.xml中增加一个配置,实现对Spring容器的加载,这时通过spring框架下的项目启动监听器(ContextLoaderListener)就可以达到这个目的。

由于服务器启动后无法直接读取WEB-INF下的配置文件,所以需要通过context-param标签重新指定spring配置文件的路径,这时通过contextConfigLocation进行配置。

applicationcontext-mvc.xml配置

该文件在和Spring进行整合的时候没有进行其他的的配置,因为SpringMVC中的对象本来就在Spring容器中。由于该配置文件是对web层进行的的配置,所以第一步需要开启组件扫描,去扫描Controller所在的包。

由于SpringMVC的运行需要三大组件即,处理器映射器,处理器适配器和视图解析器,这三个都需要配置开启。

applicationcontext-dao.xml配置

由于dao是对数据库进行操作的,所以需要配置数据源,可以在该文件中直接赋值,也可以通过db.properties对数据库的属性进行设置然后引入该xml文件中,获得数据源,然后通过该数据源去配置一个Bean标签获得SqlSessionFactoryBean对象,最后需要得到与接口对应的Mapper映射文件,所以需要配置代理管理类MapperScannerConfigure,指定映射的配置文件所在的包路径basePackage。

applicationcontext-tx.xml配置

首先需要开启组件扫描,通过组件扫描使所有的注解生效。由于在service主要涉及事务,所以需要获得在applicationcontext-dao.xml文件中的数据源创建平台事务管理器,transactionManager.由于事务管理是依赖于AOP的,所以需要对二者进行配置,在进行事务配置的时候,通过<tx:advice id="tx" transaction-manager="transactionManager">配置通知,其中通过<tx:attributes>指定在那些方法需要增强。通知配置好后需要通过AOP配置切面,切面中织入切入点到代理对象。

第二部分:具体配置

单体练习的配置

1、mybatis

mybatis环境的搭建

第一步、编写sqlMapConfig.xml配置文件

第二步、编写实体类接口

第三步、编写映射文件Mapper.xml

第四步、编写测试类,创建SqlSession对象

第五步、通过SqlSession对象的getMapper获取代理对象

第六步、通过代理对象调用方法实现方法的调用

2、Spring

Spring环境搭建

Spring核心特征是IOCAOP

配置文件名称

第一步、创建applicationcontext.xml

第二步、在测试类中读取该文件并创建applicationContext的对象cx

第三步、通过cx.getBean()方法获取对象

第四步、通过获取的对象进行操作

AOP操作如下

第一步,编写增强类(增强对象)

第二步、在applicationcontext.xml中编写AOP的配置信息,例如

<aop:config>
    <aop:aspect id="aspect" class="">
    <aop:before method="before" pointcut="public void *.*..*.*(..)">
    </aop:aspect>
</aop:config>

第四步、编写测试类

Spring的事务操作如下

<!--事务管理器配置-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
​
<!--配置事务的通知-->
<!--
    id="advice" 表示IOC容器中真正的通知对象的id。
    transaction-manager="transactionManager" 表示指定当前要对哪个事务管理器进行配置
    如果事务管理器在IOC容器中的id为transactionManager,此配置可以省略。
-->
<tx:advice id="advice" transaction-manager="transactionManager">
    <tx:attributes>
        <!--
            <tx:method 指定目标对象中切入点的方法名
            name="*" 表示目标对象中所有方法都是切入点,都要有事务。
            name="save*" 目标对象中所有以save开头的方法要走事务。
            name="update*" 目标对象中所有以update开头的方法要走事务。
            name="delete*" 目标对象中所有以delete开头的方法要走事务。
            name="find*" 所有以find开头的方法不走事务。
            propagation="REQUIRED" 指定事务的传播行为,如果要事务就配置REQUIRED,不要就配置SUPPORTS
            read-only="true"  是否只读,如果是true,表示只能做查询操作,没有事务。false就什么可以操作。
            rollback-for=""  指定一个异常,出现此异常才回滚,其余异常都不回滚。不配置默认表示所有异常都回滚。
            no-rollback-for=""  指定一个异常,出现此异常不回滚,其余异常都回滚。不配置默认表示所有异常都回滚。
            timeout="-1" 指定超时时间,不指定默认是-1,表示永不超时
            isolation="" 指定事务的隔离级别,默认就使用当前数据库默认的事务隔离级别。
        -->
        <tx:method name="save*" propagation="REQUIRED"/>
        <tx:method name="update*" propagation="REQUIRED"/>
        <tx:method name="delete*" propagation="REQUIRED"/>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>
​

3、SpringMVC

第一步、在web.xml中配置前端控制器

第二步、在前端控制器中的初始化参数设置ContextConfigLoaction

第三步、编写spring-mvc的配置文件,编写视图解析器并开启处理器映射器和处理器适配器两大组件以及注解。


SSM整合

1、Spring与Mybatis的整合

第一步、在applicationcontext.xml中添加数据源

第二步、在applicationcontext.xml中添加SqlSessionSqlSession要在容器内

第三步、在applicationcontext.xml中添加MapperScannerConfig

2、Spring与SpringMVC的整合

SpringSpringMVC的整合只需保证在web服务器启动的时候Spring容器也启动就可以完成整合。

第一步、在web.xml中添加ContextLoaderListener项目加载器监听器

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

第二步、重新指定Spring的配置文件路径

<!-- Spring配置文件开始  -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:spring-config.xml
    </param-value>
</context-param>
 

SpringMVC+Spring+Mybatis简单总结的更多相关文章

  1. Idea SpringMVC+Spring+MyBatis+Maven调整【转】

    Idea SpringMVC+Spring+MyBatis+Maven整合   创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...

  2. SpringMVC+Spring+MyBatis+Maven调整【转】

    Idea SpringMVC+Spring+MyBatis+Maven整合   创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...

  3. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  4. 2.springMVC+spring+Mybatis整合

    前面已经说了,springMVC+spring+Mybatis的整合思路了,现在就照着这个思路来做一下: 在开始之前先来看一下工程的目录结构: config这个目录底下放的都是配置文件: mybati ...

  5. Maven 搭建SpringMvc+Spring+Mybatis详细记录

    总觉得,看比人写的总是那么好,每次搭建框架时都会找博客,找教程来跟着一步一步走,虽然很快搭建成功了,但是经常情况是我并不知道我干了什么,也不记得具体步骤,到底为什么要这么做,今天我详细记录了一下自己搭 ...

  6. springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

    自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用 ...

  7. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

  8. (一)springmvc+spring+mybatis+maven框架搭建

    (一)springmvc+spring+mybatis+maven框架搭建 1.说明 工作之余,为了学习点东西.先搭建个框架. 以后要往里面加东西,比如rabbitMQ.redis.shiro等. 也 ...

  9. mybatis学习(十一)——springmvc++spring+mybatis整合

    做任何一个项目都以一个需求,这里先定义一下需求:利用三大框架查询酒店列表. 一.搭建开发环境 1.创建一个web项目 我这里用的是 jdk1.8+tomact7.0 2.创建hotel表 CREATE ...

随机推荐

  1. Web 标准构成

    Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合.主要包括结构(Structure).表现(Presentation)和行为(Behavior)三个方面. 结构标准:结构用 ...

  2. linux 显示不可见字符

    在Linux中,cat -A file可以把文件中的所有可见的和不可见的字符都显示出来,在Vim中,如何将不可见字符也显示出来呢?当然,如果只是想在Vim中查看的话,可以这样:%!cat -A在Vim ...

  3. Bash基础——工作管理(Job control)

    注:1.这里说的Bash不单纯的指Bash,泛指shell 2.这里的后台指的是Bash下面避免任务(Jobs)被Ctrl+C中断的一种场景,与我们说的deamon那种后台工作的进程不是一个概念,注意 ...

  4. [堆栈]Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    转自:https://blog.csdn.net/yangkuanqaz85988/article/details/52403726 问题1:不同线程/进程拥有着不同的栈,那系统所有的中断用的是同一个 ...

  5. zabbix 自动发现(LLD)

    概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项 ...

  6. IDEA快速搭建WEB项目【记录篇】

    这里用的都是市面上通用的技术,而每个公司都有自己的调用方式,可以根据实际情况与业务场景不同去进行变通 三层架构: 界面层(User Interface layer).业务逻辑层(Business Lo ...

  7. 装新的python3.7时ModuleNotFoundError: No module named '_ctypes'

    在编译安装新的python3.7的时候 报错 ModuleNotFoundError: No module named '_ctypes',其实是缺少了一个新需要的开发包libffi-devel,安装 ...

  8. ts介绍

    typescript是微软开发的一门编程语言,它是javascrip的一个超集,它遵循最新的es6脚本语言规范,typescript扩展了javascript的语法,任何已经存在的javascipt程 ...

  9. 2019-08-28 redhat linux如何部署禅道服务器(一键安装包)

    linux一键安装包内置了XXD.apache, php, mysql这些应用程序,不需要再单独安装部署. linux一键安装包分为32位和64位两个包,请大家根据操作系统的情况下载相应的包. 一.准 ...

  10. 51nod 2387 戴德兰

    牛牛非常喜欢赶deadline.输入n, c, d一共有n个任务,第i个任务需要a[i]分钟完成 特别的,在最后d分钟,牛牛的效率会变成双倍(耗时变为一半) 可能出现一个任务前半部分不在最后d分钟,后 ...