@Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。
对于出现异常的代码中用到try{}catch(),如果在catch 中只是打印异常,没有抛出,事物就不会rollback,框架也不会接收到异常信息。
如果像下面这样子写,肯定是可以回滚的!
如果像下面这样子写,在被@Transactional注解的方法上抛出异常,我觉得也不会回滚事务,测试一下呢?【其实自己理解错了】
测试之后,发现事务也会回滚的。