其他分享
首页 > 其他分享> > 使用Spring 2.5从外部事务控制内部事务设置

使用Spring 2.5从外部事务控制内部事务设置

作者:互联网

我正在使用Spring 2.5事务管理,我有以下设置:

Bean1

@Transactional(noRollbackFor = { Exception.class })
public void execute() {
  try {
    bean2.execute();
  } catch (Exception e) {
    // persist failure in database (so the transaction shouldn't fail)
    // the exception is not re-thrown
  }
}

Bean2

@Transactional
public void execute() {
  // do something which throws a RuntimeException
}

故障永远不会从Bean1持久存储到DB中,因为整个事务都会回滚.

我不想在Bean2中添加noRollbackFor,因为它在许多没有逻辑的地方使用,无法正确处理运行时异常.

有没有办法避免只有从Bean1调用Bean2.execute()时才回滚我的事务?

否则,我想我最好的选择是在新的交易中坚持我的失败?还有什么干净我可以吗?

解决方法:

这是注释的注意事项之一……你的课程不可重复使用!

如果您在XML中配置事务,那么就可以.

假设您使用XML配置:如果它不消耗昂贵的资源,您可以创建另一个bean2实例以使用您指定的代码.也就是说,您可以按照上面的指定配置一个,并且可以配置一个没有回滚的异常.

标签:spring,transactions,transactional,spring-transactions
来源: https://codeday.me/bug/20190710/1421583.html