Spring @Transactional on class vs on method

ex3*_*x3v 5 java spring jpa spring-mvc

我正在使用Spring BootSpring Data JPA.

有以下课程:

import org.springframework.transaction.annotation.Transactional;

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

    public void bar(){}

}
Run Code Online (Sandbox Code Playgroud)

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(){}

}
Run Code Online (Sandbox Code Playgroud)

为什么?使用readOnly truefalse安全问题?

Ank*_*hal 13

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

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

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