Spring @Transactional on class vs on method

时间:2014-12-25 13:26:21

标签: java spring spring-mvc jpa

我正在使用Spring BootSpring Data JPA

有以下课程:

import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED)
public class Foo{

    public void bar(){}

}

bar()和任何其他成员方法也是交易性的吗?

我还有第二个问题。在许多教程中,人们倾向于这样做:

import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public class Foo{

    @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
    public void bar(){}

}

为什么呢?使用readOnly truefalse是否属于安全问题?

1 个答案:

答案 0 :(得分:13)

方法级别的注释完全覆盖了类型级别的注释。

类级别的@Transactional注释将应用于类中的每个方法。

但是,当使用@Transactional注释方法时,这将优先于在类级别定义的事务设置。