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

从另一个@Transactional注释方法调用@Transactional注释方法

涂飞航
2023-03-14
@Transactional 
public void method1(){
   //do something
   call method2();
  //do something
  ...
  ...
  failed here
}

@Transactional
public void method2(){
  //do something
  save()
}

共有1个答案

柴泰平
2023-03-14

它取决于txtype。默认情况下,它是必需的。因此,第一个方法启动事务,同一事务用于调用Method2。

还要注意同一对象内的方法调用不会触发事务处理。通常,事务处理是作为代理处理的,只有在调用注入的其他bean时才起作用。但是,在您的示例中,您不会注意到差异。

如果method1不是@transactional,而method2是@transactional,这就很重要了。在这种情况下,根本不会有任何交易。

 类似资料:
  • 问题内容: 我在Service类中看到了一种被标记为的方法,但是它也在同一类中调用了其他未标为的方法。 这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或暂停父事务等? 不带任何注释的方法的默认行为是什么,而另一个带有注释的方法调用该方法的默认行为是什么? 问题答案: 当你调用没有事务块之内的方法时,父事务将继续使用新方法。它将使用与父方法(with )相同的连接,以及在调用的方法中导

  • 问题内容: 美好的一天。如下代码: 据我了解,如果方法中存在异常,则不会回滚事务。以及如何使它滚动?并返回SomeResult 问题答案: 您不应该以编程方式调用回滚。根据docs的建议,最好的方法是使用声明性方法。为此,您需要注释哪些异常将触发回滚。 在你的情况下,像这样 看一下@Transaction API 和有关回滚事务的文档。 如果尽管有文档建议,但仍要进行程序化回滚,则需要按照已建议的

  • 我正在使用带有webflux的spring boot 2.4.2连接到postgres数据库。我在使用事务性代码时观察到了一个我不理解的行为。 为了展示这种行为,我创建了一个示例应用程序,试图将行添加到两个表中;表“a”和表“b”。对表“a”的插入预计将失败,并出现重复密钥冲突。考虑到使用了事务性,我希望不会向表“b”中添加任何行。 然而,根据我用哪个方法注释事务,我会得到不同的结果。 如果我对c

  • 我不明白的是为什么人们说自我调用会破坏交易?只要调用方方法是事务性的,难道一切都不应该像预期的那样工作吗?我有什么遗漏吗?

  • 问题内容: 你应该将放置在类和/或它们的方法中,还是更好地注释使用DAO对象调用的Service类?还是对两个“层”都进行注释是否有意义? 问题答案: 我认为交易属于服务层。这是了解工作单元和用例的人。如果你将多个DAO注入到一个服务中,而这些DAO需要在单个事务中一起工作,那么这是正确的答案。

  • 我有一个跨国类,我想让它启用web服务: 我试过: 但是我努力工作,我也尝试过: 当我运行它时,我得到: 线程“main”组织中出现异常。springframework。豆。工厂BeanCreationException:创建在类路径资源[remote application.xml]中定义了名为“cre remoting”的bean时出错:调用init方法失败;嵌套的例外是java。lang.I