> 文章列表 > Spring事务的实现原理

Spring事务的实现原理

Spring事务的实现原理

两种事务的实现方式

在使用Spring框架的时候,可以有两种事务的实现方式,一种是编程式事务,由用户自己通过代码来控制事务的处理逻辑(开启、提交、关闭、回滚),还有一种是声明式事务,通过@Transactionali注解来实现。

事务的操作

其实事务的操作本来应该是由数据库来进行控制,但是为了方便用户进行业务逻辑的操作,Spring对事务功能进行了扩展实现,一般我们很少会用编程式事务,更多的是通过添加@Transactional注解来进行实现,当添加此注解之后事务的自动功能就会关闭,由spring框架来帮助进行控制。

AOP的体现

其实事务操作是AOP的一个核心体现(通过动态代理的方式来进行实现的),当一个方法添加@Transactional注解之后,spring会基于这个类生成一个代理对象,会将这个代理对象作为bean,当使用这个代理对象的方法的时候,如果有事务处理,那么会先把事务的自动提交给关闭,然后去执行具体的业务逻辑,如果执行逻辑没有出现异常,那么Spring框架会把你的当前事务进行提交,如果出现任何异常情况,那么直接进行回滚操作,当然用户可以控制对那些异常进行回滚操作。

参考资料:Spring面试必问:Spring事务的实现原理是什么?