事务注解什么时候会失效
相比于手动打开事务和关闭事务,事务注解的使用比较简单。但是它的使用必须遵循一些规则,否则会面临失效的风险。
第一个点,就是方法必须用公开修饰符,否则会失效。原因是,事务注解是根据动态代理实现的,其源码显示如果不是公开修饰符,将不会执行代理对象创建以及代理方法的调用。
第二个点,在于写在了类内部调用的方法上,那事务将不会生效。原因是,内部调用的方法,将绕开代理对象,从而使得事务控制失效。
第三个点,在于方法内部捕捉了异常,没有抛出异常,导致了事务回滚失败。这是因为,只有异常被捕捉到,事务的回滚操作才会执行。