1.事务的特性

  原子性:事务中的操作是不可分割的一部分

  一致性:要么同时成功,要么同时失败(事务执行前后数据保持一致)

  隔离性:并发互不干扰  

  持久性:事务一旦被提交,它就是一条持久性的数据

  

 2.Spring事务管理高层抽象3个接口

    PlatformTransactionManager--平台事务管理器

      -Spring为不同的持久化框架提供了不同的平台事务管理器接口实现

    TransactionDefinition--事务定义信息(隔离,传播,超时,只读)

      1>事务的隔离级别

        default--适用后端数据库默认的隔离级别

        READ_UNCOMMITED - READ_COMMITTED - REPEATABLE_READ - SERIALIZABLE(脏,幻(虚),不可重复读)

      2>事务的传播行为:解决业务层方法之间相互调用的问题

        PROPAGATION_REQUIRED - 支持当前事务,如果不存在就新建一个

        PROPAGATION_REQUIRES_NEW - 如果有事务存在,挂起当前事务,创建一个新的事物

        PROPAGATION_NESTED - 如果当前事务存在,则嵌套执行

    TransactionStatus--事务具体运行状态

      1>------------------------------------------------------

    流程 --

        根据事务定义的信息有平台事务管理器进行事务管理,进行管理产生相应的状态

 

3.Spring事务管理

  - 编程式的事务管理 -- 通过TransactionTemplate(事务模板)

  - 使用xml配置声明式事务

    --基于transactionProxyFactoryBean的事务管理

      ---配置事务管理器

      ---配置业务层代理

      ---配置目标对象

      ---注入事务管理器

      ---注入事务

      <!--

prop格式 PROPAGATION--事务的传播行为 ISOLATION--事务的隔离级别        READONLY--只读

-EXCEPTION--发生哪些行为事务回滚 +EXCEPTION--发生哪些错误事务不回滚

-->

<!-- 配置事务管理器 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"></property>

</bean>

<!-- 配置业务层代理 -->

<bean id="accountServiceProxy"

class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<!-- 配置目标对象 -->

<property name="target" ref="accountService"></property>

<!-- 注入事务管理器 -->

<property name="transactionManager" ref="transactionManager"></property>

<!-- 注入事务属性 -->

<property name="transactionAttribute">

<props>



<prop key="tran*">PROPAGATION_REQUIRED</prop>

</props>

</property>

</bean>



--基于AspectJ的事务声明(重点)

    ---配置事务的增强

      ----事务定义信息

        -----propagation:事务的传播行为

        -----isolation:事务的隔离级别

        -----read-only:只读

        -----rollback-for:发生哪些异常时回滚

        -----no-rollback-for:发生哪些异常时不回滚

        -----timeout:过期信息

     ---配置切面

      ----配置切入点

      ----配置切面

      <!-- 配置事务的通知(事务的增强) -->

<tx:advice id="transactionAdvice" transaction-manager="transactionManager">

<!-- 事务定义信息 -->

<tx:attributes>

<tx:method name="tran*" propagation="REQUIRED" read-only="false" />

</tx:attributes>

</tx:advice>

<!-- 配置切面 -->

<aop:config>

<!-- 配置切入点 -->

<aop:pointcut expression="execution(* com.spring.service.impl.*.*(..))"

id="pointcut" />

<!-- 配置切面 -->

<aop:advisor advice-ref="transactionAdvice" pointcut-ref="pointcut" />

</aop:config>

  

  --基于注解的方式进行事务的声明(重点)

    ---开启事务注解

        <tx:annotation-driven transaction-manager="transactionManager"/>

    ---在要进行实务操作的类名上进行注解

@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)

源码 --

Spring声明式事务的配置方式的更多相关文章

  1. Spring声明式事务的配置~~~

    /*2011年8月28日 10:03:30 by Rush  */ 环境配置 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可.添加 ...

  2. Spring声明式事务的实现方式选择(JDK动态代理与cglib)

    1.简介 Spring声明式事务的具体实现方式是动态决定的,与具体配置.以及事务代理对象是否实现接口等有关. 2.使用JDK动态代理的情况 在满足下面两个条件时,Spring会选择JDK动态代理作为声 ...

  3. 五(一)、spring 声明式事务注解配置

    一.事务概述: 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用:比如 用户购买图书:购买动作之前需要确认 ①图书的数量是否足够:②用户账号余额是否足够 ...

  4. spring声明式事务以及配置

    使用spring提供的事务处理机制的好处是程序员可以不用关心事务的切面了,只要配置就好了,可以少写代码. spring声明式事务处理 spring 声明:针对的是程序员,程序员告诉spring容器,哪 ...

  5. 五(二)、spring 声明式事务xml配置

    概述: 接着上一节内容,把注解配置@@Transactional形式改为xml配置形式: 一.配置步骤 1.配置事务管理器 1 <!-- 1配置事务管理器 --> 2 <bean i ...

  6. XML方式实现Spring声明式事务管理

    1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...

  7. JavaEE学习之Spring声明式事务

    一.引言 上一篇文章,学习了AOP相关知识,并做了一个简单的Hello world.本文在上篇文章的基础上,进一步学习下Spring的声明式事务. 二.相关概念 1. 事务(Transaction)— ...

  8. spring 声明式事务管理

    简单理解事务: 比如你去ATM机取5000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉5000元钱:然后ATM出5000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了5000块但 ...

  9. Spring声明式事务(xml配置事务方式)

    Spring声明式事务(xml配置事务方式) >>>>>>>>>>>>>>>>>>>& ...

随机推荐

  1. Vitamio介绍及使用

    一.Vitamio介绍 1.1 Vitamio是什么? Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这 ...

  2. WinSetupFromUSB制作多系统U盘引导启动

    重装系统有各种方式,比较常见的有做系统引导U盘.刻录PE.硬盘一键安装等.但是有很多缺点,国内大部分用的Ghost系统,内含各种捆绑软件,系统极其不安全.稳定,另外制作U盘启动也只能做一个系统的安装盘 ...

  3. [ CodeVS冲杯之路 ] P3115

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/3115/ 基础的高精度减法,先判断一下被减数是否小于减数,若是则交换位置,打上 “-” 负号 当然也可以用压位做 #in ...

  4. centos 7 安装配置mod_security

    1.旧版本安装过程: http://blog.secaserver.com/2011/10/install-mod_security-apache2-easiest/ http://www.cnblo ...

  5. MFC数据类型转换 _itoa atoi、atof、itoa、itow _itoa_s

    _itoa 功能:把一整数转换为字符串 用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to ar ...

  6. ros结合catkin_make和qtcreator

    首先是ros官网关于IDE的教程: http://wiki.ros.org/IDEs#QtCreator 1.qtcreator安装 从官网上下载.run文件, https://info.qt.io/ ...

  7. [BZOJ3211]花神游历各国&&[BZOJ3038] 上帝造题的七分钟2 树状数组+并查集

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 4057  Solved: 1480[Submit][Status][Discu ...

  8. SpringBoot整合Zookeeper和Dubbo

    一.Dubbo 1. Dubbo定义 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来 ...

  9. Tarjan缩点【p1726】上白泽慧音

    Description 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的 ...

  10. javascript 回调函数

    在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...