SSM整合要点
1. Spring接管Mybatis的Session工厂
- 创建applicationContext.xml
- 引入外部的数据源(连接池)
- 由Spring来管理SqlSessionFactory工厂
- 由Spring来扫描dao接口包
- 这么做的目的只有一个: 就是顶替掉mybatis的核心配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--1. 配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///ssm"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean>
<!--2. 让spring创建SqlSessionFactory : SqlSessionFactoryBean专门用来创建SqlSessionFactory-->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--3. 配置扫描包 : 这段配置顶替掉了SQLMapConfig里面的 mappers的配置-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
</bean>
</beans>
2. 配置 spring 的事务
- mybatis默认不会自动提交: setAutoCommit(false) , 所以对于增伤改的动作,需要提交事务才行。
<!--
4. 配置事务
4.1 配置管理员,
如果dao层使用的技术是jdbc|muybatis ,那么使用的管理员:DataSourceTransactionManager
如果使用的技术是Hibernate ,那么使用的管理员:HibernateTransactionManager
4.2 配置事务的注解开关
-->
<bean id="tm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="tm"/>
3. 配置applicationContext
- 由于配置
springmvc
的时候,写了springmvc.xml
,配置Mybatis
的时候,有applicationContext.xml
但是项目启动的时候,解析的入口是在web.xml
里面配置。此时存在两个文件,如何抉择呢?有三种方式可供选择。
- 方式一:别写applicationContext.xml了,
直接把applicationContext.xml里面的配置定义在springmvc.xml.
- 方式二: 可以给两个文件用相同的前缀命名:applicationContext*.xml
<!--初始化参数:加载配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</init-param>
- 方式三: 在springmvc.xml 引入applicationContext.xml,在springmvc.xml中导入applicationContext.xml , 然后在web.xml中只需要引入springmvc.xml即可。
<!--引入applicationContext.xml-->
<import resource="classpath:applicationContext.xml"/>
<!-- 或者: -->
<import resource="applicationContext.xml"/>