@Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别

Raj*_*pta 1 spring hibernate spring-boot

@Transactional(rollbackFor = Exception.class) 
public void foo1() {
    `/**Some Code**/`
}

@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
    `/**Some Code**/`
}
Run Code Online (Sandbox Code Playgroud)

M. *_*num 5

@Transactional(propagation=Propagation.REQUIRED)并且@Transactional(rollbackFor = Exception.class)大致相同。由于propagation=Propagation.REQUIRED默认的。因此,考虑到这一点,它们等效于@Transactional(propagation=Propagation.REQUIRED)@Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class)

唯一的区别是,如果没有rollbackFor = Exception.class它,它只会回滚RuntimeExceptions 而不会回滚Error发生的其他异常。(使用 EJB 时 JEE 也是如此,并且行为也已转换为 Spring)。

这也是在说明中的javadoc@Transactional