1.添加了 @Transactional 注解的方法,如果在方法中添加 try { }catch(){ }块, 那么在块中如果发生异常则不会回滚。如果抛出一个运行时异常throw new RuntimeException(“运行时异常”); 那么就算try { }catch(){ }包括住了,事务也会回滚
2.如果一个需求是: 当我在做删除操作时,不管失败与否,都必须调用添加日志方法,进行添加日志(不使用aop)。 那么添加日志的方法就需要定义事务的传播行为:
propagation= requires_new ;
含义:如果当前线程中存在事务,则挂起当前事务,并新建一个属于自己的事务执行,当自己的事务执行完毕之后,再唤醒之前挂起的事务,继续执行。
并且当调用时:获取到代理对象进行调用 这样事务不会失效。
3.事务失效
模拟场景:
当一个事务方法中A去调用另外一个事务方法B,并且传播行为都是默认的。
如果A