一. 开发环境
SpringMVC+Spring+Mybatis
二.注意点
1.事务注解只在Service层生效
2.在被事务注解的Service类中,尽量不要使用Try...Catch 语句,如要使用必须在catch抛出自定义异常runtimeException
三.解释
1.为什么事务注解只在Service层生效
原因:因为Spring中事务中,事务的管理类bean是在Service类中的bean注入的。这个具体可以查看Spring事务注解的演变过程
2.为什么在被注解的Service类中,不要使用Try...Catch语句,否则会失效
原因:因为事务机制是在类出现了未检出性异常时才生效(runtimeException/error).,如果使用了try Catch.检测不到异常,那么事务将无法生效。
解决办法:个人觉得抛出个runtimeException并在异常中说明具体原因就可以。这样既让事务管理生效,而且上层也可以了解到具体的异常情况
四.参考文章
https://blog.youkuaiyun.com/zhaolang2009/article/details/78775225