声明市事务是利用AOP来实现的。

1、采用事务管理器AOP:

<!--3、配置事务切面;控制住连接池  --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="comboPooledDataSource"></property></bean>2、配置开启基于注解的事务控制
<tx:annotation-driven/>3、给事务方法上加注解
@Transactional

2、自身构建AOP
基于注解的AOP

1)对切面类的方法进行配置
2)将切面类和业务逻辑组件都加入到容器
3)告诉SpringIOC容器哪个类是切面类@Aspect
4)开启基于注解的AOP功能

基于XML的AOP

1)对切面类的方法进行配置
2)将切面类和业务逻辑组件都加入到容器
3)告诉SpringIOC容器哪个类是切面类@Aspect

在其他类中本类事务,才会分大小方法的事务特性。

/*** 结果:没有任何事务特性;* * 本类调用本类事务;* 1、现象:大方法是默认REQUIRED*         小方法两个都设置了REQUIRES_NEW,但是没用* 2、现象:大方法是默认REQUIRES_NEW*         小方法两个都设置了REQUIRES_NEW,但是没用* 3、现象:大方法是默认REQUIRES_NEW*         小方法两个都是REQUIRED,还是没用* * 为什么?怎么调都调整不了一个回滚一个不回滚?* MulService{*         BookService bs = 代理;*         mulTx(){*             //代理.方法()*             bs.checkout();*             bs.updatePrice();*         }* }* * *  //两个小事务怎么设置都不行,都是一起滚;* BookService{*         //*         hahah(){*             //自己方法;把这个方法cv过来*             checkout();*             //cv进haha*             updatePrice();*         }* }* * {*         hahah(){*             int price = bookDao.getPrice(isbn);//1、减用户余额bookDao.updateBalance(price, username);//2、减图书的库存bookDao.updateStock(isbn);bookDao.updatePrice(isbn);*         }* }* 原因:*     所有切入了事务的业务逻辑组件,在ioc容器中保存的是这个组件的代理对象;*     本类直接调用本类方法,就相当于是将本类的方法的代码,cv进当前方法里面*     现象就是其实只有一个事务,就是hahah();* * 类编译;*     本类方法调用本类方法,相当于将另外一个方法的实现cv过来;*/

转载于:https://www.cnblogs.com/limingxian537423/p/7252919.html

Aop事务小结(事务管理器和自身构建)相关推荐

  1. 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全

    基于角色的安全是从 Windows NT 的第一个版本开始在 Windows 平台上发展而来的.使用角色,操作系统可以通过检查称为 BUILTIN\Administrators 的组的安全上下文做出一 ...

  2. python 计时器_Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

  3. Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

  4. VS2010与.NET4系列 23.Visual Studio 2010 扩展管理器(和新的 VS2010 PowerComman

    今天介绍VS2010中的扩展能力改进,以及一个微软发布的"PowerCommands for Visual Studio 2010"扩展. VS2010中的扩展能力 VS2010比 ...

  5. django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)

    Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质. 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html ...

  6. django 1.8 官方文档翻译: 2-5-1 管理器

    管理器 class Manager 管理器是一个接口,数据库查询操作通过它提供给django的模型.django应用的每个模型至少拥有一个 管理器. 管理器类的工作方式在 执行查询文档中阐述,而这篇文 ...

  7. oracle 逐层合计,Oracle数据仓库的分层管理器解决方案

    Oracle数据仓库的分层管理器解决方案以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要 本文描述分层管理器的原理 ...

  8. Python学习之路33-上下文管理器和else块

    <流畅的Python>笔记. 本篇主要讨论Python用户常忽略掉的一些流程控制特性,包括上下文管理器和else块.内容包括else与非if关键字的搭配:Python中的上下文管理器,如何 ...

  9. Spring AOP事务实现原理之事务管理器TransactionManager

    流程图 该图介绍了事务的传播行为 该流通图展示的是TransactionManager具体如何结合事务的传播行为进行事务获取 该流通图展示的是TransactionManager具体如何结合事务的传播 ...

最新文章

  1. 京东网络开放之路——自研交换机探索与实践
  2. 分享Kali Linux 2016.2第46周镜像文件
  3. mysql 服务器 kill进程_mysql查询结束进程kill
  4. 快播王欣明天就出狱了,他能借钱东山再起吗?
  5. Linux入门基础(1)
  6. WdatePicker 设置日期第一个比第二个的日期小
  7. HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例
  8. 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测
  9. 智力问答选择题_智力问答:智力题大全及答案
  10. Android开启桌面模式,Android Q自带桌面模式:支持大宽屏幕
  11. ubuntu里面控制器放大缩小屏幕
  12. 教你分割视频,用多个视频随机合并,添加音频
  13. Vue img图片加载不出来或加载错误显示默认图片
  14. 一次苦中作乐的追码过程(上)
  15. c语言猜拳游戏石头剪刀布,模拟剪刀石头布猜拳游戏
  16. 「6月雅礼集训 2017 Day4」暴力大神hxx
  17. @RequestBody是干嘛的,作用是什么?
  18. MYSQL 1366报错如何解决
  19. Swing 入门介绍
  20. Realplayer11 v6.0.14.738英文官方原版

热门文章

  1. JUC并发编程八 并发架构--ReentrantLock
  2. 谈谈Promise的前世今生
  3. 移动端开发 rem 单位使用问题
  4. docker-macvlan网络
  5. [编程技巧] 巧用CPU缓存优化代码:数组 vs. 链表
  6. Leetcode_198_House Robber
  7. cocos2dx JS 层(Layer)的生命周期
  8. Python 延迟初始化(lazy property)
  9. 开始写博客,毕业一年的收获
  10. bootstrap的验证和确认对话框