Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 静态事务属性是否传播到子类?_Spring_Grails - Fatal编程技术网

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

Spring 静态事务属性是否传播到子类?,spring,grails,Spring,Grails,我在grails中有一个抽象服务类,用于设置事务属性 大概是这样的: abstract class AbstractService { static transactional = false } class MyService extends AbstractService { // methods } 仅通过扩展AbstractService中的MyService中的方法是否也是事务性的错误?简言之,是的,但只要您不定义 import grails.transacti

我在grails中有一个抽象服务类,用于设置事务属性

大概是这样的:

abstract class AbstractService {

    static transactional = false
}

class MyService extends AbstractService {

    // methods
}

仅通过扩展
AbstractService

中的
MyService
中的方法是否也是事务性的错误?简言之,是的,但只要您不定义

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注释。结果将为空。对于下面的测试


如果事务不受支持,aa将返回null,如果是,您将看到类似于
传播\u REQUIRED,隔离\u DEFAULT

的内容,简而言之,是的,但只要您不定义

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注释。结果将为空。对于下面的测试


如果事务不受支持,aa将返回null,如果是,您将看到类似于
PROPAGATION\u REQUIRED,ISOLATION\u DEFAULT

的内容。我尝试使用
TransactionSpectSupport?.currentTransactionInfo()
查看我是否在事务中,但它总是返回null。甚至在带有transaction的
块中。我尝试使用
TransactionSpectSupport?.currentTransactionInfo()
查看我是否在事务中,但它总是返回null。甚至在带有事务的
块中。