@Transactional(rollbackFor = Exception.class)
public void foo1() {
`/**Some Code**/`
}
@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
`/**Some Code**/`
}
@Transactional(propagation=Propagation.REQUIRED)
和@Transactional(rollbackFor = Exception.class)
大致相同。由于propagation=Propagation.REQUIRED
是the default。因此,考虑到这一点,他们相当于@Transactional(propagation=Propagation.REQUIRED)
和@Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class)
。
唯一的区别是,如果没有rollbackFor = Exception.class
,它将仅针对RuntimeException
s和Error
回滚,而不是针对发生的其他异常。 (当使用EJB时,这与JEE相同,并且行为也已转换为Spring)。
这也在javadoc of @Transactional
中有所解释。
首先,默认情况下,如果你写或不写,propagation
总是存在。如果你编写rollbackFor
,那么如果发生异常,事务将回滚。
这是一个更多帮助的链接:@Transactional