@Transactional做事务处理,发生异常却不回滚

熊猫工具站 2014-10-15 05:05:09
做事务回滚测试
配置文件:

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

测试类:

@Test
public void testTransaction(){
List<User> users = new ArrayList<User>();
for(int i=1;i<5;i++){
User user = new User();
user.setAge(i);
user.setPassword(i+"111111");
user.setUserName("测试"+i);
users.add(user);
}
this.userService.insertUser(users);
}

业务层:

@Transactional
@Override
public void insertUser(List<User> users) {
for(int i = 0;i < users.size();i++ ){
if(i<2){
userDao.insert(users.get(i));
}else{
throw new RuntimeException();
}
}
}
...全文
1863 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35648178 2016-08-04
  • 打赏
  • 举报
回复
我刚看也懵逼半天,我也很久没用过这个了,
raistlic 2016-08-03
  • 打赏
  • 举报
回复
为什么你们都喜欢用xml 另外单元测试代码贴的不全,runner注解没贴
黑色冬眠 2016-08-03
  • 打赏
  • 举报
回复
我也是这个错误搞了一下午,多谢老兄提醒。
熊猫工具站 2014-10-22
  • 打赏
  • 举报
回复
我靠,我知道为啥了。大家看我的配置,我只是设定了事务管理,但是没有开启事务,还需要再加一行配置
<!--启动spring注解功能-->
    <!-- 开启事务注解驱动 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
rockets311 2014-10-22
  • 打赏
  • 举报
回复
meng020712 2014-10-16
  • 打赏
  • 举报
回复
你将 <aop > ,<tx > 这两个配置了吗? 不配置怎么提交事务、
熊猫工具站 2014-10-16
  • 打赏
  • 举报
回复
引用 2 楼 pdager001 的回复:
持久层框架用的什么?
Mybatis
humanity 2014-10-16
  • 打赏
  • 举报
回复
把 xml 换成了 annotation 后背后的设计应该不会有大的改动。原理应该类似,可能就是需要额外的参数说明。
humanity 2014-10-16
  • 打赏
  • 举报
回复
像 EJB 2.0+ 把异常划分成2种类型: 1、应用程序异常:表示应该程序应该自己处理这种异常,容器不关心它,在决定事务状态时也不考虑这种异常。 2、系统异常:表示这与系统有关系,容器会在捕获到这种异常时回滚当前事务。 那么你现在理解的 Spring 中的事务管理对于这些异常有什么约定呢? Spring 文档中有没有说,默认地对所有异常都回滚事务,还是说需要我们明确地指定哪些类型的异常自动回滚事务? 我去年看了一下 Spring 某个版本的 html 上介绍说这个 xml 配置中关于异常处理好像没有默认值,需要明确地指出,不知道是不是这么回事。这点可以从 Spring 官方网站上的文档介绍中与这个 xml 格式相关的地方找到答案。
pdager001 2014-10-16
  • 打赏
  • 举报
回复
持久层框架用的什么?
guan_tu 2014-10-15
  • 打赏
  • 举报
回复
底层使用什么添加的?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧