美文网首页
Spring中的AOP事务

Spring中的AOP事务

作者: 花无缺_0159 | 来源:发表于2019-02-10 10:32 被阅读0次

【目录】
1 Spring的事务管理机制
2 Spring事务管理两种方式

1 Spring的事务管理机制

Spring事务管理高层抽象主要包括3个接口,Spring的事务主要是由他们共同完成的:

  • PlatformTransactionManager:事务管理器—主要用于平台相关事务的管理
  • TransactionDefinition: 事务定义信息(隔离、传播、超时、只读)—通过配置如何进行事务管理。
  • TransactionStatus:事务具体运行状态—事务管理过程中,每个时间点事务的状态信息。

PS:什么是事务——把多条数据库操作捆绑到一起执行,要么都成功,要么都失败。
Spring-aop事务基本操作有:打开事务、提交事务、回滚事务。
在Spring中,利用接口来管理不同框架的事务操作:
a.通过实现PlatformTransactionManager接口支持不同的框架完成各自的事务处理;
b.为不同平台提供对应的事务管理器的实现:JDBC&Mybatis:DataSourceTransactionManager;…
另外,Spring-aop有特定的事务传播行为:用于事务方法嵌套调用,一般用REQUIRED就行了。

事务方法嵌套调用的规则:
xService.x(); -> yService.y();
1.REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置;
2.REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务;
3.SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行;
4.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起(暂停);
5.MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常;
6.NEVER:以非事务方式执行,如果当前存在事务,则抛出异常;
7.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与REQUIRED类似的操作。

2 Spring事务管理两种方式

Spring 支持两种方式事务管理

  • 编程式的事务管理
    通过TransactionTemplate手动管理事务
    在实际应用中很少使用,原因是要修改原来的代码,加入事务管理代码 (侵入性 )
  • 使用XML配置声明式事务
    Spring的声明式事务是通过AOP实现的(环绕通知)
    开发中经常使用(代码侵入性最小)——推荐使用!

相关文章

网友评论

      本文标题:Spring中的AOP事务

      本文链接:https://www.haomeiwen.com/subject/qlhzsqtx.html