这边博客介绍了springmvc与spring及mybatis的继承。
1、整合思路
dao层:
mybatis+spring
目标:
使用spring对sqlSessionFactory进行管理
使用spring和mybatis整合包中的mapper扫描器对mapper接口进行扫描生成代理对象。
service层:
spring
目标:
让spring管理service类,将mapper代理对象注入到service对象中。
spring要对service方法执行进行事务控制
controller层:
springmvc+spring
目标:
使用注解处理器映射器和适配器进行开发Handler
Handler使用组件扫描方式在spring容器中进行注册
2、工程搭建
2.1 创建maven web工程
2.2 设置jar包依赖(pom设置)
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
2.3 配置service
加入spring。
2.3.1 web.xml
配置spring监听器,设置spring核心文件的位置。
1 | <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
2.3.2 spring核心文件
依据上一步的设置,在classpath下新建applicationContext.xml
设置spring约束的文件头
1 | <?xml version="1.0" encoding="UTF-8"?> |
开启注解功能,并设置扫描路径
1
2
3
4
5
6<!-- 1、开启注解、自动扫描 -->
<context:annotation-config />
<context:component-scan base-package="com.topvision.ssm">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
注意:
在配置扫描路径时,要避免对Controller注解的扫描,目的是将该注解所标识的bean交给springmvc管理而不是spring管理。
加载属性文件,如数据库配置文件
1
2
3
4
5
6
7
8
9
10<!-- 2、加载properties -->
<!-- <context:property-placeholder location="classpath:jdbc.properties"/> -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
依上在classpath下新建jdbc.properties文件。
1 | s2sm.jdbc.driverClass = com.mysql.jdbc.Driver |
设置数据源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<!--3、 数据库C3P0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${s2sm.jdbc.driverClass}" />
<property name="jdbcUrl" value="${s2sm.jdbc.url}" />
<property name="user" value="${s2sm.jdbc.username}" />
<property name="password" value="${s2sm.jdbc.password}" />
<property name="initialPoolSize" value="${s2sm.cpool.initialPoolSize}" />
<property name="minPoolSize" value="${s2sm.cpool.minPoolSize}" />
<property name="maxPoolSize" value="${s2sm.cpool.maxPoolSize}" />
<property name="acquireIncrement" value="${s2sm.cpool.acquireIncrement}" />
<property name="maxIdleTime" value="${s2sm.cpool.maxIdleTime}" />
<property name="acquireRetryAttempts" value="${s2sm.cpool.acquireRetryAttempts}" />
<property name="acquireRetryDelay" value="${s2sm.cpool.acquireRetryDelay}" />
</bean>
设置SqlSessionFactory
1
2
3
4
5
6
7
8
9
10
11
12
13<!-- 4、配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:sqlMapConfig.xml" />
<!-- 扫描entity包 使用别名 -->
<property name="typeAliasesPackage" value="com.topvision.ssm.domain" />
<!-- 扫描sql配置文件:mapper需要的xml文件 -->
<!-- <property name="mapperLocations" value="classpath:mapper/*.xml" /> -->
<property name="mapperLocations"
value="classpath*:com/topvision/ssm/dao/mapper/*.xml" />
</bean>扫描Dao层接口
1
2
3
4
5
6
7<!-- 5、配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 给出需要扫描Dao接口包 -->
<property name="basePackage" value="com.topvision.ssm.dao" />
</bean>Spring事务
1
2
3
4
5
6
7<!-- 5、事务,开启注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
2.4 配置Dao
根据上面SqlSessionFactory的设置,在classpath下新建SqlMapConfig.xml。
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
</configuration>
2.5 整合Controller
2.5.1 配置springmvc前端控制器
1 | <servlet> |
2.5.2 springmvc核心文件
1 | <?xml version="1.0" encoding="UTF-8"?> |
2.5.3 开发Controller
1 | <!--该注解标识handler--> |