@Transactional注解在以下场景中使用,是会失效的,切记!
1、非public方法
spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transactional 的属性配置信息。
2、注解@Transactional的方法不是事务主方法,在子方法中进行注解
@Transactionalpublic void A(){try{this.B();}catch(Exception e){logger.error();}}
此时,B方法报错后被A捕捉,事务失效。
3、@Transactional注解后未加(rollbackFor = Exception.class)
不加(rollbackFor = Exception.class)
的话,当方法中报错,报错前的内容会进行提交,而不会进行回滚,也就不会达到事务的效果。
以上!