核心配置:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
">
<context:component-scan base-package="cn">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 国际化的资源文件 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="/my"></property>
</bean>
<!-- 加载jdbc.properties -->
<context:property-placeholder location="classpath:/jdbc.properties"/>
<!-- 引入连接池,是数据源的一个实现 dbcp -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${url}"></property>
<property name="driverClassName" value="${driverclass}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${pd}"></property>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="30"/>
<!--向数据库发起一个sql语句,从而保持连接 -->
<property name="validationQuery" value="SELECT sysdate FROM DUAL"/>
</bean>
<!-- 类似于Mybatis中SqlSessionFactory -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--
配置全局配置文件及映射文件
<property name="configLocation" value="classpath:conf/spring/mybatisConfig.xml"/>
<property name="mapperLocations" value="classpath:conf/sqlMapMybatis/sqlMap_city.xml"/>
-->
</bean>
<!-- 类似在mybatis全局配置文件,配映射文件 -->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 该属性会覆盖读取jdbc.properties文件的过程 所以不可取 -->
<!--<property name="sqlSessionFactory" ref="sessionFactory"></property> -->
<property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
<!-- 读取接口 注意:不要扫描错了,扫描到类的父包-->
<property name="basePackage" value="cn.et.tesk.mapper"></property>
</bean>
<!-- 用接口映射,这个类也不需要 注入SqlSessionTemplate的实例,构造方法初始化sqlSessionFactory-->
<!--
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sessionFactory"></constructor-arg>
</bean>
-->
<bean id="transaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txadvice" transaction-manager="transaction">
<tx:attributes>
<tx:method name="insert*"/>
<tx:method name="update*"/>
<tx:method name="delete*"/>
<!-- 前三个方法开启事务,默认RUQ.. 最后一个只读,就是不开启事务-->
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 扫描service接口 -->
<aop:pointcut expression="execution (* cn.*..*.service.*.*(..))" id="mypointcut"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="mypointcut"/>
</aop:config>
</beans>