静态事务属性是否传播到子类?

时间:2015-12-21 13:51:21

标签: spring grails

我在grails中有一个抽象服务类来设置事务属性。

这样的事情:

abstract class AbstractService {

    static transactional = false
}

class MyService extends AbstractService {

    // methods
}

通过扩展MyServiceAbstractService中的方法是否也是错误的。

1 个答案:

答案 0 :(得分:0)

简而言之,但只要你没有定义

import grails.transaction.Transactional

import org.springframework.transaction.interceptor.TransactionAspectSupport


class TestingService extends TestService {
    //DO NOT ENABLE THIS OTHERWISE IT IS TRANSACTIONAL
    //static transactional = true
    def doIt() {
        def aa = TransactionAspectSupport?.currentTransactionInfo()
        return aa
    }

    @Transactional
    def doIt2() {
        def aa = TransactionAspectSupport?.currentTransactionInfo()
        return aa
    }


}

因此,如果您覆盖静态事务,那么它将变为事务性的。如果您坚持使用扩展抽象类中的静态声明,现在即使您定义了@Transactional注释。结果将为null。对于下面的测试。

如果不支持交易,aa将返回null,如果是,您将看到类似PROPAGATION_REQUIRED,ISOLATION_DEFAULT

的内容