spring代理iBATIS时事务不能回滚

转载 2012年03月28日 22:57:13

kkkk如题!

废话不多说了,直接上配置,配置如下,各位看了便知!

applicationContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans  
  4.   
  5.     xmlns="http://www.springframework.org/schema/beans"  
  6.   
  7.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  8.   
  9.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  10.     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  11.         <property name="location"><value>classpath:jdbc.properties</value></property>  
  12.     </bean>  
  13.   
  14.   
  15.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">  
  16.         <property name="url"><value>${jdbc.url}</value></property>  
  17.         <property name="driverClassName"><value>${jdbc.driver}</value></property>  
  18.         <property name="username"><value>${jdbc.username}</value></property>  
  19.         <property name="password"><value>${jdbc.password}</value></property>      
  20.         <property name="defaultAutoCommit" value="false"></property>  
  21.     </bean>  
  22.   
  23.   
  24.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  25.         <property name="dataSource" ref="dataSource"/>  
  26.     </bean>  
  27.   
  28.   
  29.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor" >  
  30.         <property name="transactionManager" ref="transactionManager" />  
  31.         <property name="transactionAttributes">  
  32.             <props>  
  33.                 <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>  
  34.                 <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>  
  35.             </props>  
  36.         </property>  
  37.     </bean>  
  38.   
  39.   
  40.     <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  41.         <property name="beanNames"> <value>*Service</value></property>  
  42.         <property name="interceptorNames"><value>transactionInterceptor</value></property>  
  43.     </bean>  
  44.   
  45.     <bean id="sqlMapClientFactory" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  46.         <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>  
  47.         <property name="dataSource" ref="dataSource"></property>  
  48.         <property name="lobHandler">  
  49.             <bean class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>  
  50.         </property>  
  51.     </bean>  
  52.   
  53.     <bean id="sqlMapTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">  
  54.         <property name="sqlMapClient" ref="sqlMapClientFactory" />  
  55.         <property name="exceptionTranslator">  
  56.             <bean class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">  
  57.                 <property name="dataSource" ref="dataSource" />  
  58.             </bean>  
  59.         </property>  
  60.     </bean>  
  61. </beans>  

 daoContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.     <bean id="employeeDao" class="mypackage.dao.impl.EmployeeDaoImpl">  
  6.         <property name="sqlMapTemplate">  
  7.             <ref bean="sqlMapTemplate" />  
  8.         </property>  
  9.     </bean>  
  10. </beans>  

 serviceContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.     <bean id="employeeService" class="mypackage.service.impl.EmployeeServiceImpl">  
  6.         <property name="employeeDao"><ref bean="employeeDao" /></property>  
  7.     </bean>  
  8. </beans>    

在EmployeeServiceImpl中故意让程序抛出了exception,但是事务仍然提交了:-(

分享到:  
评论
3 楼 workman93 2008-07-23  
Spring代理需要一个RuntimeException才可以回滚。
2 楼 Allen 2008-06-18  
Where is ur pattern matching beanName(s) declared? 

I can only find id declaration of those "*Service" beans... 

Regards.
1 楼 jier007 2008-06-17  
<p>EmployeeDaoImpl.java</p>
<pre name='code' class='java'>package mypackage.dao.impl;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;

public class EmployeeDaoImpl implements EmployeeDao
{
private SqlMapClientTemplate sqlMapTemplate;

public void saveEmployee(Employee emp)
{
sqlMapTemplate.insert("employee.save" emp);
}

public void setSqlMapTemplate(SqlMapClientTemplate sqlMapTemplate)
{
this.sqlMapTemplate = sqlMapTemplate;
}

public SqlMapClientTemplate getSqlMapTemplate()
{
return sqlMapTemplate;
}
}</pre>
<p>  EmployeeServiceImpl.java</p>
<pre name='code' class='java'>package mypackage.service.impl;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;
import mypackage.service.EmployeeService;

public class EmployeeServiceImpl implements EmployeeService
{
private EmployeeDao dao;

public void saveEmp(Employee emp)
{
dao.saveEmployee(emp);
Integer.parseInt("回滚回滚回滚吧!!!");
}

public void setEmployeeDao(EmployeeDao dao)
{
this.dao = dao;
}
}</pre>
 

相关文章推荐

ibatis怎么回滚数据?

同时操作两张表,前面一个INSERT语句成功,但后一个INSERT语句失败,这种情况怎么回滚第一个语句新增的内容。一张表插入不成功则都不成功,这要怎么做? 为什么不回滚 发生异常才会回滚,不是这样配...
  • ffmoshu
  • ffmoshu
  • 2012年03月28日 22:54
  • 970

IBATIS事务处理

iBATIS事务处理是和Dao紧密相联的。          在使用Dao时,如以下代码,先插入新记录,再进行更新:          UserDao.insertUser (user); // ...

mybatis整合spring、springmvc时业务层无法进行事务回滚问题解决

前言:近期换了新公司,刚来公司就接触了一下mybatis,因为springmvc和spring比较熟悉,我想大概现在绝大部分的公司都在用吧,刚接触mybatis时感觉真心蛋疼,纯sql才处理业务,实在...

特定需求下动态代理导致的Spring事务不能回滚

有一个并没有使用动态生成的代理,而是直接调用的方法本体,也就是内部方法,显而易见,就是child方法。我们总结一下,就是在使用jdk里面的动态代理时,像这种事务内部调用已声明事务的方法是没有用的,这种...

Spring实现iBATIS事务回滚

配置如下: Spring实现iBATIS事务回滚之Web.xml ﹤?xml version="1.0" encoding="UTF-8"?﹥ ﹤web-app xmlns="http://...

Spring实现iBATIS事务回滚~

Spring 实现iBATIS事务回滚是怎么实现的呢?让我们开始这篇文章的学习,这篇文章将会想你介绍Spring 实现iBATIS事务回滚的相关消息 AD: Spr...
  • ffmoshu
  • ffmoshu
  • 2012年03月28日 22:30
  • 1458

Spring/SpringMVC/MyBatis整合+事务回滚

  • 2016年02月24日 11:33
  • 25.61MB
  • 下载

spring+ mybatis 事务不能回滚问题解决

最近遇到一个回滚问题,百度了一天了,终于解决了; 百度上遇到很多中情况,我记录的情况主要是一下几点,但都解决不了,可能是错误类型不同,我的解决方式如下 我的事务管理用的是aop我贴出代码: tx:a...

spring整合Hibernate事务不能自动回滚

最近在研究spring整合hibernate的时候,spring里面的transaction默认是对RumtimeException进行自动回滚,但是验证了好几遍,依然能插入数据,然后查了一下资料,原...

spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子

如何测试事务,测试事务回滚情况: 我做了大量的不同的测试: 场景1:    Service层中使用注解@Transactional,注解@PersistenceContext     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring代理iBATIS时事务不能回滚
举报原因:
原因补充:

(最多只允许输入30个字)