最近在学习Spring,在配置事务管理器的时候发现怎么也不回滚,求解!
Beans.xml配置
<context:component-scan base-package="com.spring.test" />
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/test2?useUndicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="weihua" />
<property name="defaultAutoCommit" value="true"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
访问数据库的代码
@Repository("userDAO")
@Transactional
public class UserDAOImp implements UserDAO {
private JdbcTemplate jdbcTemplate;
@Resource(name = "dataSource")
public void setDataSource(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
@Transactional(propagation=Propagation.REQUIRED,rollbackFor={Exception.class})
public void save(User user) throws Exception{
jdbcTemplate.update("insert into _USER(name) values (?)", new Object[] { user
.getName() }, new int[] {Types.VARCHAR});
throw new Exception("Error");
}
}
JUint测试代码:
public class TransactionTest {
private static UserDAO userDAO;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
userDAO=(UserDAO) context.getBean("userDAO");
}
@Test
public void testSave() throws Exception {
User user=new User("袁伟华");
userDAO.save(user);
}
}
我一开始抛出的是RuntimeException,可是还是能够保存成功!也试了@Transactional(propagation=Propagation.REQUIRED,rollbackFor={Exception.class})不加花括号,结果都是一样的不回滚!不知道问题是出在哪了,在线解释……
分享到:
相关推荐
自己做的一个简单的spring运用实例,主要是关于事务回滚的一个小例子,希望对还在纠结事务回滚的童靴有点帮助。。。
花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
Spring/SpringMVC/MyBatis整合,可事务回滚
Spring事务管理A方法内部调用B方法的回滚问题测试代码
下面小编就为大家带来一篇完美解决Spring声明式事务不回滚的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用MySQL时,如果发现事务无法回滚,但Hibernate、Spring、JDBC等配置又没有明显问题,到底是什么原因,下面与大家分享下
主要介绍了spring事务异常回滚实例解析,具有一定借鉴价值,需要的朋友可以参考下
Spring中@Transactional事务回滚(含实例详细讲解,附源码)Java开发Java经验技巧共8页.pdf.zip
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚,需要了解更多Spring事务方面的知识,可详看本
Spring中的JdbcTemplate,Spring中的的事务.。。。。。。。
spring boot 纯注解方法事务控制回滚,注解+简单配置文件使用多线程demo
SPRING与IBATIS整合采用保留IBATIS事务,可自己控制回滚!
主要给大家介绍了关于mongoDB 4.0事务回滚的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
集成了Spring 3.2.2 Hibernate 3.3.2 Struts 2.3.4 用JPA的注解实现orm 不用创建数据库表 只需本机上有oracle即可 用JSR注解进行Spring的...用Spring Test整合Junit4 进行测试并自动事务回滚 不对数据库造成持久化操作
本篇文章主要介绍了浅谈Spring中@Transactional事务回滚及示例(附源码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上...说一下环境 Intellij Idea 15 + Maven + Spring 4.25 + Mybatis 3使用注解的方式,进行的事务回滚,欢迎测试。
主要介绍了使用SpringBoot注解方式处理事务回滚实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Spring异常捕获且回滚事务解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
关于SpringMyBatis纯注解事务不能提交的问题分析与解决