最初的理解 @Transactional 是放在service层的 后来看到源码里写道 可以放在任意一个spring管理的bean 于是乎 放在了controller层 可是问题来了 异常不回滚, 几番周折搜索才知道 因为controller层使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制。怎样才能即使用try catch去捕获异常,而又让出现异常后spring回滚呢,这里就要用到
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
完美解决问题。并且能够使该方法执行完。