`
zhaoshengxuan108
  • 浏览: 25951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring + ibatis 事务出现不回滚的问题

 
阅读更多

ibatis 配置事务如下(applicationContext-dao.xml):

 

<!-- 数据源配置 -->
<bean id="dbtec2"  class="org.apache.commons.dbcp.BasicDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url"
			value="jdbc:mysql://${dbtec2.ip}:3306/dbtec2?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"></property>
	<property name="username" value="${dbtec2.username}"></property>
	<property name="password" value="${dbtec2.password}"></property>
	<property name="maxActive" value="100"></property>
	<property name="maxIdle" value="30"></property>
	<property name="maxWait" value="500"></property>
	<property name="defaultAutoCommit" value="false"></property>
</bean>

<!-- 数据源注入session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<!-- 映射MYBATIS的XML文件 -->
	<property name="mapperLocations" value="classpath*:com/octlink/tec2/bus/dao/*.xml" />
	<!-- 引用数据源 -->
	<property name="dataSource" ref="dbtec2" />
	<!-- 数据类型别名 -->
	<property name="typeAliasesPackage" value="com.octlink.tec2.model" />
</bean>

<bean id="transactionManagerForIbatis"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dbtec2" />
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManagerForIbatis">
	<tx:attributes>
		<tx:method name="get*" read-only="true" />
		<tx:method name="insert*" propagation="REQUIRED" />
		<tx:method name="delete*" propagation="REQUIRED" />
		<tx:method name="update*" propagation="REQUIRED" />
		<tx:method name="*" propagation="REQUIRED" />
	</tx:attributes>
</tx:advice>

<aop:config proxy-target-class="false">
	<aop:pointcut id="serviceMethod" expression="execution(* com.octlink.tec2.bus.system.*.service.*.*.*(..))" />
	<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
</aop:config>

 

 

Spring (spring-servlet):

<!-- 自动扫描bean,把作了注解的类转换为bean -->
<context:component-scan base-package="com.octlink.tec2.bus.system.*.controller" />

 

注意:配置不正确导致回滚失败。如果spring-servlet文件扫描组件时,包含了service层,在事务控制的过程中引入的不是applicationContext-dao里面定义的service,这样就没事务控制了,导致事务失败。所以扫描组件时,不要包含service层。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics