spring 事务的实现方式原理是什么?
在使用 Spring 框架的时候,可以有两种事务的实现方式,一种是编程式事务,有用户自己通过代码来控制事务的处理逻辑,还有一种是声明式事务,通过@ Transactional 注解来实现。
其实事务的操作本来应该是由数据库来进行控制,但是为了方便用户进行业务逻辑的操作, spring 对事务功能进行了扩展实现,一般我们很少会用编程式事务,更多的是通过添加@Transactional 注解来进行实现,当添加此注解之后事务的自动功能就会关闭,有 spring 框架来帮助进行控制。
其实事务操作是 AOP 的一个核心体现,当一个方法添加@Transactional 注解之后, spring 会基于这个类生成一个代理对象,会将这个代理对象作为 bean ,当使用这个代理对象的方法的时候,如果有事务处理,那么会先把事务的自动提交给关系,然后去执行具体的业务逻辑,如果执行逻辑没有出现异常,那么代理逻辑就会直接提交,如果出现任何异常情况,那么直接进行回滚操作,当然用户可以控制对哪些异常进行回滚操作。