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

Spring@事务性注释类或方法

卫皓
2023-03-14

试图收集和理解@事务性注释的要点并越过了一点。因此,在使用事务性注释时,我们需要记住的主要事情是:

  1. 事务注释只能应用于公共方法[根据Spring@Transactional属性对私有方法起作用吗?
  2. 事务性注释应该应用于具体的类,而不是接口[根据我应该将@transactional annotation放在接口定义还是实现类的位置?
  3. 事务注释应应用于服务级别[根据Spring@Transactional annotation最佳实践
  4. 如果您希望在对整个类进行注释时排除某些公共方法进行事务性注释,则可以使用一些传播策略[根据对整个类的事务性注释+排除单个方法

不幸的是,我没有找到这个问题的答案:把事务性注释放在哪更好--放在类或方法上?我们可以考虑不同的情况,但我最感兴趣的是当我们有几个方法必须有这个注释,而有些没有的时候。

另外,也许你想在这份清单上加点,那真的太好了。

共有1个答案

曾奇略
2023-03-14

下面是我能想到的利弊清单。

Pro方法级别:

  • 易于阅读:您查看一个方法,就可以看出它是事务性的,而不必查看类、其实现的接口或超类。
  • explicit:注释清楚地告诉您该方法是事务性的。它不仅仅是事务性的,因为类中的所有方法都是事务性的。
  • (否则)独立事务的较少意外合并:如果您从一个(隐式)事务性的方法调用多个事务性方法,那么外部事务将定义整个事务(除非传播设置类似REQUIRES_NEW)。虽然这在许多情况下是没有问题的,但我已经看到项目陷入严重的麻烦由于这在长期。特别是当涉及到悲观锁定时,保持事务尽可能独立和小是至关重要的,因此事务只需要很少的锁,并且锁被尽快释放。
    null
 类似资料:
  • 在我们的一个项目中,我们遇到了一个问题,Spring忽略了事务注释,然后失败了,出现了以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2018-09-13 15:05:18406错误[主]组织。springframework。靴子SpringApplication应用程序运行失败组织。springframework。道。Inva

  • 我正在阅读使用Spring框架的事务管理。在第一个组合中,我使用Spring Hibernate和Hibernate的API来控制事务(Hibernate API)。接下来,我想使用注释进行测试,它确实起了作用。 我感到困惑的是: > JPA、JTA、Hibernate是否有自己的事务管理方式。举个例子,考虑如果我使用Spring Hibernate,在那种情况下,你会使用“JPA”事务吗? 就像

  • 问题内容: 之间有什么区别? 在整个类中添加“ @Transactional”注释 为每个方法添加“ @Transactional”注释? 使用spring和Hibernate吗? 问题答案: 基本上,如果您用所有方法注释该类,则将是事务性的。如果您不这样做,则可以仅将其标注为所需的方法。此外,你可以为每个方法指定不同的属性,如,,,…

  • 我试图执行一个集成测试,我的类与@Transactional注释不能自动连接到一个测试类与NoSuchBean定义异常。我把它注释出来,检查了一份装载豆子的列表,我的服务就在那里,只是没有注射。 组织。springframework。豆。工厂BeanCreationException:创建名为“com”的bean时出错。icsynergy。西姆。服务DBIntegrationServiceTest

  • 我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示: 以及我的应用程序上下文: 尝试运行时,我收到以下错误消息: 该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。