spring是如何控制事务的提交和回滚
加上@Transactional注解之后,Spring可以启到事务控制的功能了,再正式执行方法前它会做一些操作,我们来看看
首先进入CglibAopProxy.class的intercept方法或者JdkDynamicAopProxy.class的invoke方法(继承接口方式),根据不同实现方法选择不同的动态代理类
CglibAopProxy.class
ReflectiveMethodInvocation.class然后一步一步往下走来到invoke方法TransactionInterceptor.classTransactionAspectSupport.class的invokeWithinTransaction方法, invocation.proceedWithInvocationspring事务是环绕通知@Transactional 事务注解是如何产生作用的?
如上所说,事务最开始是先进入CglibAopProxy.class的intercept方法或者JdkDynamicAopProxy.class的invoke方法,可以看出这2个类都是AOP增强类,所以@Transactional 事务注解才可以产生作用。
有哪些不同类型的事务
来到TransactionAspectSupport.class的 createTransactionIfNecessary方法
AbstractPlatformTransactionManager.class简单时序图
- 挂起:在新方法里面,不使用外部的事务环境
- 嵌套事务:
- 保存点:









