springboot 让事务生效@Transactional的注意事项


1、在启动类上加上注解 @EnableTransactionManagement,即将事务交给spring管理

@EnableTransactionManagement

 2、在类上或者方法上加上  @Transactional (rollbackFor = {Exception.class})

@Transactional(rollbackFor = {Exception.class})
public String test() {
    return "aaa";
}

注意:

@Transactional可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有public方法将都具有该类型的事务属性。

但是Spring建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。

另外,@Transactional注解应该只被应用到public方法上,这是由Spring AOP的本质决定的。

必须抛出异常才会回滚,若使用try-catch对其异常捕获则不会进行回滚!

手动回滚:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

相关