简介问题:
因为复习一下spring事务,所以想到了这些:
- spring事务传播行为有那些,怎么使用好
- 什么时候会失效
- 为什么会失效
- 事务是什么时候创建的
学习内容:
- spring事务的传播行为
网上有很多:https://blog.youkuaiyun.com/pml18710973036/article/details/58607148
总结:@Transactional默认是REQUIRED,只要加到最外层,基本能解决事务问题,但是加到最外层后,你如果里面的业务什么的,查询什么的,对数据库操作过多,会产生大事务。你需要仔细阅读上述链接,才能配置好。于是我又想到:那不同事务中查询的结果也不一样。那还是得好好考虑。 - 什么时候会失效
网上有很多: https://www.cnblogs.com/wangchuanfu/p/15233284.html
讲的很好 - 为什么会失效
为什么要失效,所以到底什么时候开启事务:
http://www.voidcn.com/article/p-tvhtywql-tz.html
我也没看好明白,大概意思就是:在SpringIoC容器中返回的调用的对象是代理对象而不是真实的对象。而这里的this是EmployeeService真实对象而不是代理对象。就是你要用代理对象去调方法。
bean已经被创建,但是调用方法时会看你上面有没有其他注解,然后再对注解做操作,而下面的其他方法调用就没做这个事了。