今日内容
第一章:戴安整合环境
第二章:Spring框架代码的编写
第三章:Spring整个SpringMVC框架
第四章:Spring整个MyBatis框架
2.Spring整和SpringMVC:
项目中有一个最大的域对象ServletContext,随着服务器的开启而创建
服务器的关闭而销毁,所以只会创建一次。
我们用一个监听器里监听ServletContext的创建和销毁,那么这个监听器
就只会执行一次,而且是在项目启动时执行。
那么这中情况正好符合我们想要加载Spring中的配置文件
applicationContext.xml的情况。所以我们用这个监听器来监听
ServletContext的同时,加载applicationContext.xml配置文件。
加载完之后,监听器会帮你创建一个WEB版本的工厂,存储到ServletContext
对象当中,而这个对象只有一个。我们用的时候可以再从这个对象中取。
Spring给我们提供好了这个监听器。
```
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
```
该监听器监听ServletContext对象,用于加载applicationContext.xml
置文件,但是默认只加载WEB-INF目录下的。
我们之前想要加载的配置文件目前写在resources目录下:
resources目录下的配置文件,一编译会放到target/classes目录下
所以如果把配置文件放到resources目录下,那么当项目部署后,监听器
就找不到这个配置文件了。
所以我们给监听器设置一个加载配置文件的路径让它加载类路径下的配置
文件。
```
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
```
1.Srping整合Mybatis:
如果能直接拿到mybatis生成的dao代理对象,当道IOC容器中交给Spring
来管理,那么就成功整合了。
mybatis生成的代理对象怎么放到IOC容器中呢?
我们通过在spring的主配置文件里,通过配置来整合:
```
<!--Spring整和Mybatis框架-->
<!--配置连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!--配置SqlSessionFactory工厂:工厂能创建session,session能创建代理对象
通过连接池构建Session工厂
-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置AccountDao接口所在包:指定生成哪些接口的代理对象-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itcast.dao"></property>
</bean>
```
以后SqlSession由IOC容器来为我创建:
Spring扫描SqlSessionFactory工厂,创建响应对象放到IOC容器中。
工厂对象再创建Session对象,Session再创建dao代理对象,存到IOC容器
中。
这些对象都放到IOC后,我们就完成了Spring整合mybatis,然后进行
正常依赖注入。
在此例中,也就不需要mybatis的配置文件了(SqlMapConfig)。
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--引入映射配置文件-->
<mappers>
<!--<mapper class="cn.itcast.dao.AccountDao"></mapper>-->
<package name="cn.itcast.dao"/>
</mappers>
</configuration>
```