Aop事务小结(事务管理器和自身构建)
声明市事务是利用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
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过来;
*/
Aop事务小结(事务管理器和自身构建)的更多相关文章
- [WCF编程]12.事务:事务协议与管理器
一.事务协议 总体来说,WCF开发人员不需要涉及事务协议与管理器.我们应该依赖WCF来选择相应的事务协议和管理器,重点关注业务逻辑的实现. WCF是根据事务范围里的参与个体来选择事务管理协议的.事务管 ...
- 怎么在项目中使用前端包管理器bower和构建工具gulp
下面以WeUI(微信官方网页开发样式库)介绍一下,怎么把WeUi引入到自己的项目中,我的开发环境Visual Studio 2012,当然了Visual Studio 2015对此已有了更好的支持(h ...
- CMU-15445 LAB3:事务隔离,two-phase locking,锁管理器
概述 本lab将实现一个锁管理器,事务通过锁管理器获取锁,事务管理器根据情况决定是否授予锁,或是阻塞等待其它事务释放该锁. 背景 事务属性 众所周知,事务具有如下属性: 原子性:事务要么执行完成,要么 ...
- 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
基于角色的安全是从 Windows NT 的第一个版本开始在 Windows 平台上发展而来的.使用角色,操作系统可以通过检查称为 BUILTIN\Administrators 的组的安全上下文做出一 ...
- rpm - RPM 软件包管理器
SYNOPSIS 查询和校验软件包: rpm {-q|--query} [select-options] [query-options] rpm {-V|--verify} [select-optio ...
- 第15章 上下文管理器和else块
#<流流畅的Python>第15章 上下文管理器和else块 #15.1 先做这个,再做那个:if语句之外的else块 #else子句不仅能在if语句中使用,还能在for.while和tr ...
- Spring事务管理器的应对
Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋.像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便:而iBatis则通过模板化技术让你方便地控制SQ ...
- Spring学习8-Spring事务管理(AOP/声明式式事务管理)
一.基础知识普及 声明式事务的事务属性: 一:传播行为 二:隔离级别 三:只读提示 四:事务超时间隔 五:异常:指定除去RuntimeException其他回滚异常. 传播行为: 所谓事务的传播行为 ...
- spring简单事务管理器
事务管理器 <!-- Transaction manager for a single JDBC DataSource --> <bean id="transaction ...
随机推荐
- 第一次安装tomcat报错,出现failed to install tomcat8 service错误
第一次安装tomcat报错,出现failed to install tomcat8 service错误(0) 一.一般情况下这种错误都是没有卸载干净造成的,安全卸载Tomcat的方法 (转载); ht ...
- 控件布局_LinearLayout
gravity和layout_gravity的区别 android:gravity与android:layout_gravity.他们的区别在于:android:gravity用于设置View组件的对 ...
- 视频播放flv player的使用
JW FLV PLAYER 中文文档 使用方法:如果你仅需要播放一个FLV文件[例如“video.flv”],那么只要把“video.flv”和压缩包内的 flvplayer.swf复制到同一个目录内 ...
- jquery ajax 方法实例
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 直接上代码, ajax实例: $.ajax({ type : & ...
- redis类与用法
<?phpnamespace app\common\model; class Cache { public $redis = null; public function __construct( ...
- the security of smart contract- 2
出处:https://cloud.tencent.com/developer/article/1192548 深度解析Solidity的17个坑及超详细避坑指南 写的很好,好好学习 1. Re-Ent ...
- 天融信资料下载官方FTP服务器
2017年更新:最近发现天融信的FTP服务器变更为了ftp://ftp.topsec.com.cn/,用户名:topsec,密码:topsec2016(不知道后期密码会不会改成topsec2017,如 ...
- mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存
关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法.别名.输入映射.输出映射 mybat ...
- Linux系统学习之软件安装
一.源码包编译安装 由于计算机无法直接执行用高级语言编写的源程序,因此想要运行程序,就需要一种机制来让计算机识别,这样程序才可能运行起来.一般来说,计算机中存在解释型和编译型两种语言. 所谓解释型语言 ...
- 【转】Kaggle注册问题-验证码和手机短信
注册和登录Kaggle时验证码无法显示问题 参考:https://blog.csdn.net/zhuisaozhang1292/article/details/81529981 应用FQ软件需要时时关 ...