当前位置: 首页 > 面试题库 >

整个类的事务注释+排除单个方法

耿俊彦
2023-03-14
问题内容

我有一个带有@Transactional注释的类(而不是对其所有方法进行标记)。

虽然我在该类中只有一个方法,但不应将其注释为@Transactional

我的问题是我可以在此方法中添加注释以将其标记为“非事务性”吗?或者我应该开始将此类中的每个方法都标记为“事务性”,但不包括此方法(很多工作)

谢谢。


问题答案:

有不同的事务传播策略可以使用。这些存在于枚举中Propagation。您可能要使用的是

/**
 * Execute non-transactionally, suspend the current transaction if one exists.
 * Analogous to EJB transaction attribute of the same name.
 * <p>Note: Actual transaction suspension will not work on out-of-the-box
 * on all transaction managers. This in particular applies to JtaTransactionManager,
 * which requires the {@code javax.transaction.TransactionManager} to be
 * made available it to it (which is server-specific in standard J2EE).
 * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager
 */
NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED),

/**
 * Execute non-transactionally, throw an exception if a transaction exists.
 * Analogous to EJB transaction attribute of the same name.
 */
NEVER(TransactionDefinition.PROPAGATION_NEVER), // maybe not this one

因此,使用这两种方法在您的类中注释方法。

@Transactional
public class MyTransactionalClass { 
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void nonTransactionalMethod() {...}
}

您可以在此处找到所有传播策略。



 类似资料:
  • 试图收集和理解@事务性注释的要点并越过了一点。因此,在使用事务性注释时,我们需要记住的主要事情是: 事务注释只能应用于公共方法[根据Spring@Transactional属性对私有方法起作用吗? 事务性注释应该应用于具体的类,而不是接口[根据我应该将@transactional annotation放在接口定义还是实现类的位置? 事务注释应应用于服务级别[根据Spring@Transaction

  • 嗨,我想排除带注释的方法,这里是代码。 排除任何用NoTryCatch注释的方法 上面的代码确实排除了用NoTryCatch注释的方法,但是当这个方法被异常调用时,它会停止下一个方法的执行。例如 现在我按顺序调用方法 test1()不运行。 如果我删除test1()运行

  • 我正在使用Spring(3.1.4版本)和HibernateTemplate(3.6.7.Final)以及Spring数据JPA(1.3.0版本)。我在配置文件中定义了两个事务管理器,一个用于Hibernate,另一个用于Spring数据JPA。两个事务管理器使用不同的数据源。 我想在代码中使用Hibernate的事务管理器和Spring data JPA的事务管理器。(Spring文档链接-10

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

  • 问题内容: 我写了以下函数: 我想向函数添加类型注释: 但是,我想明确定义返回的字典内的值 不能 为None。 有没有办法说“类型,除”或“除”以外的所有可能值? 问题答案: 假设您愿意在调用函数时修复键和值的类型,则可以使用泛型来使其明确。这还可能会允许的情况下是,但它使意图很清楚。请注意,由于存在差异问题,因此必须使用。但是,无论如何这是优选的。 使用此定义,可以正确地将可选类型转换为非可选类