声明市事务是利用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过来;
*/

Aop事务小结(事务管理器和自身构建)的更多相关文章

  1. [WCF编程]12.事务:事务协议与管理器

    一.事务协议 总体来说,WCF开发人员不需要涉及事务协议与管理器.我们应该依赖WCF来选择相应的事务协议和管理器,重点关注业务逻辑的实现. WCF是根据事务范围里的参与个体来选择事务管理协议的.事务管 ...

  2. 怎么在项目中使用前端包管理器bower和构建工具gulp

    下面以WeUI(微信官方网页开发样式库)介绍一下,怎么把WeUi引入到自己的项目中,我的开发环境Visual Studio 2012,当然了Visual Studio 2015对此已有了更好的支持(h ...

  3. CMU-15445 LAB3:事务隔离,two-phase locking,锁管理器

    概述 本lab将实现一个锁管理器,事务通过锁管理器获取锁,事务管理器根据情况决定是否授予锁,或是阻塞等待其它事务释放该锁. 背景 事务属性 众所周知,事务具有如下属性: 原子性:事务要么执行完成,要么 ...

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

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

  5. rpm - RPM 软件包管理器

    SYNOPSIS 查询和校验软件包: rpm {-q|--query} [select-options] [query-options] rpm {-V|--verify} [select-optio ...

  6. 第15章 上下文管理器和else块

    #<流流畅的Python>第15章 上下文管理器和else块 #15.1 先做这个,再做那个:if语句之外的else块 #else子句不仅能在if语句中使用,还能在for.while和tr ...

  7. Spring事务管理器的应对

    Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋.像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便:而iBatis则通过模板化技术让你方便地控制SQ ...

  8. Spring学习8-Spring事务管理(AOP/声明式式事务管理)

    一.基础知识普及 声明式事务的事务属性: 一:传播行为 二:隔离级别 三:只读提示 四:事务超时间隔 五:异常:指定除去RuntimeException其他回滚异常.  传播行为: 所谓事务的传播行为 ...

  9. spring简单事务管理器

    事务管理器 <!-- Transaction manager for a single JDBC DataSource -->  <bean id="transaction ...

随机推荐

  1. 「SNOI2019」通信

    题目 还好我没生在陕西啊 首先发现这个题不能\(dp\),数据范围不大,好像一种网络流的样子啊 哎等等,这样向后面连边不是一个\(DAG\)吗,这不是最小权路径覆盖的板子吗 于是我们套路的拆点,对于一 ...

  2. EXCEL 偶数、奇数行分开求和公式

    例举 : A1行是 123 A2行是 321 A3行是 456 A4行是 789我是加的是A1+A3得出的和还有加的是A2+A4得出的和因为要A1+A3一直加到A601,我用很笨的方式像这样子一个个加 ...

  3. 浅谈JEECG多数据源的使用

    首先,简单的介绍下什么是JEECG.JEECG(J2EECode Generation)是一款基于代码生成器的免费开源的快速开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统.JEEC ...

  4. ethereum/EIPs-160 EXP cost increase

    eip title author type category status created 160 EXP cost increase Vitalik Buterin Standards Track ...

  5. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  6. Android Universal Image Loader java.io.FileNotFoundException: http:/xxx/lxx/xxxx.jpg

    前段时间在使用ImageLoader异步加载服务端返回的图片时总是出现 java.io.FileNotFoundException: http://xxxx/l046/10046137034b1c0d ...

  7. GIT 工作区和暂存区

    工作区和暂存区 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的studygit ...

  8. highcharts中把X轴的名字竖着显示

    Highcharts.chart('container', { chart: { type: 'column' }, title: { text: 'Auto rotation limit' }, s ...

  9. SQL Server中使用convert进行日期转换(转载)

    一般存入数据库中的时间格式为yyyy-mm-dd hh:mm:ss 如果要转换为yyyy-mm-dd  短日期格式.可以使用convert函数.下面是sqlserver帮助中关于convert函数的声 ...

  10. 04-MirrorGate安装脚本备注

    1.run.sh #!/usr/bin/env bash set -e #当收到EXIT信号时执行这条命令,需要提前安装好docker-compose docker 并启动docker. trap ' ...