Spring的事务是如何实现的
spring的事务是aop来实现的 首先要生成具体的代理对象 然后按照aop的整套流程来执行具体的操作逻辑 ,正常情况下要通过通知来实现的 ,但是事务不是通过通知来实现的 而是通过TransactionInterceptor来实现的,然后调用invoke来实现具体的逻辑
1解析各个方法事务相关的属性 根据具体的属性来判断是否开始新的事务
2当需要开启的时候 获取数据库的链接 关闭自动提交的功能 开启事务
3执行具体的sql逻辑
4在操作过程中 如果执行失败了 那么通过completeTransactionAfterThrowing 看来完成事务的回滚操作 回滚具体的逻辑是通过doRollBack方法来实现的 先获取链接 通过连接对象来回滚
5如果执行过程中 没有任何以外情况的发生 那么通过commitTransactionAfterReturning 来完成提交操作 提交具体的逻辑是通过docommit方法来实现的 先获取链接 通过连接对象来提交
6.当事务执行完毕之后 需要清楚相关的事务信息 cleanupTransaciton