spring基于注解的事务不起作用的原因

时间:2021-10-11 20:35:49

1、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。

2、你的异常类型是不是unchecked异常 
如果想check异常也想回滚怎么办,注解上面写明异常类型即可

@Transactional(rollbackFor=Exception.class)

3、异常是不是被你catch住了,如果catch住了,你可以自己抛出runtimeException

虽然@Transactional注解可以被应用于接口和接口方法、类定义和类的public方法上,如果定义在接口上的话,会留下隐患,因为注解不能被继承,所以业务接口中标注的@Transactional注解不会被业务实现类继承的,子类是不会启用事务机制的,Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上