【问题标题】:Spring disable transactions for a single class methodSpring禁用单个类方法的事务
【发布时间】:2018-05-07 20:26:50
【问题描述】:

在我的 Spring 应用程序中,我有一个使用org.springframework.transaction.annotation.Transactional 注释的类。

是否可以在不从类级别声明中删除@Transactional 的情况下丢弃此类特定单个方法的事务?如果有,请举例说明

【问题讨论】:

    标签: spring transactions spring-transactions


    【解决方案1】:

    根据Transactional 文档:

    public @interface Transactional
    
    Describes a transaction attribute on an individual method or on a class.
    

    所以除了类级别注释之外,只需在您的方法中定义正确的属性以禁用默认事务处理。

    示例:

    @Transactional(propagation=Propagation.NEVER)
    public long notInTransaction(AnythingData anythingData) throws Exception {
       //JDBC code...
    }
    

    如果在活动事务中调用此方法将引发异常。而Propagation.NOT_SUPPORTED 将“暂停”当前事务并确保该方法被称为非事务性方法。

    【讨论】:

    • 使用我的配置(Spring 4.3.10,EclipseLink 2.7.6)这不起作用。 IE。尽管在方法级别上有@Transactional(propagation=Propagation.NEVER),但仍会启动事务。一旦我从类级别删除@Transactional,就不会创建任何事务。仅供参考,没关系,但我使用的是命名事务管理器和特定的回滚条件。
    • 看起来像您的事务管理框架中的一个错误。
    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多