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();