当前位置: 首页 > 知识库问答 >
问题:

嵌入式事务管理

暴德运
2023-03-14
public class A {
   @Transactional(propagation = Propagation.REQUIRED, readOnly = true, value="transactionManager")
   public void methodA() {
      B.methodB();
   }
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor=Exception.class,  noRollbackFor = MyCustomCheckedException.class, value="transactionManager")
public class B {
   @Transactional(propagation = Propagation.REQUIRED, readOnly = true, value="transactionManager")
   public void methodB() throws MyCustomCheckedException {
       try {
       } catch ( AnotherException ex ) {
          throw new MyCustomCheckedException(ex.getCode(), ex.getMessage(), ex);
       }
   }
}

有什么想法吗?

共有1个答案

宰父飞翼
2023-03-14

基本上,事务从methoda()调用开始,调用层次结构中的所有@transactional都被忽略。只有当内部@transactional中的一个具有propagation.requires_new时,事务才会更改,后者创建新事务而不考虑现有事务。

事务开始的methoda()没有norollbackfor,因此会看到错误。

来自javadoc上的propagation.required

/**
 * Support a current transaction, create a new one if none exists.
 * Analogous to EJB transaction attribute of the same name.
 * <p>This is the default setting of a transaction annotation.
 */
REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED)
 类似资料:
  • 10.8. 选择编程式事务管理还是声明式事务管理 当你只有很少的事务操作时,编程式事务管理通常比较合适。例如,如果你有一个web应用,其中只有特定的更新操作有事务要求,你可能不愿使用Spring或其他技术设置事务代理。这种情况下,使用 TransactionTemplate 可能 是个好办法。 另一方面,如果你的应用中存在大量事务操作,那么声明式事务管理通常是值得的。它将事务管理与业务逻辑分离,而

  • 10.7. 编程式事务管理 Spring提供两种方式的编程式事务管理: 使用 TransactionTemplate 直接使用一个 PlatformTransactionManager 实现 如果你选择编程式事务管理,Spring小组推荐你采用第一种方法(即使用TransactionTemplate)。第二种方法类似使用JTA的UserTransaction API (除了异常处理简单点儿)。 1

  • 10.5. 声明式事务管理 大多数Spring用户选择声明式事务管理。这是对应用代码影响最小的选择,因此也最符合非侵入式轻量级容器的理念。 Spring的声明式事务管理是通过Spring AOP实现的,因为事务方面的代码与Spring绑定并以一种样板式风格使用,不过尽管如此,你一般并不需要理解AOP概念就可以有效地使用Spirng的声明式事务管理。 从考虑EJB CMT和Spring声明式事务管理

  • 我试图用不同的事务管理器嵌套事务,其中如果嵌套的事务失败,外部主事务也需要回滚 我的spring配置文件有 但是,当失败时,中的事务不会回滚。如何使回滚工作?

  • 本文向大家介绍SpringMVC+MyBatis声明式事务管理,包括了SpringMVC+MyBatis声明式事务管理的使用技巧和注意事项,需要的朋友参考一下 采用的基本搭建环境:SpringMVC、MyBatis、MySQL、tomcat         Spring事务管理分解了传统的全局事务管理和本地事务管理的劣势,使得在任何环境中都可以使用统一的事务管理模型,你可以写一次代码,然后在不同的

  • 本文向大家介绍spring声明式事务管理解析,包括了spring声明式事务管理解析的使用技巧和注意事项,需要的朋友参考一下 前沿:通过对spring事务管理有了比较深入学习,本文将不做实例,而是指定具体的类和配置文件进行讲解。 本文内容:   1、了解什么是声明式事务?   2、声明式事务管理分别有哪几种?   3、这几种事务管理之间的区别是什么? 一、什么是声明式事务?   声明式事务(decl