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. phantomjs和selenium模拟登陆qq空间

    # -*- coding: utf-8 -*- from selenium import webdriver import time driver =webdriver.PhantomJS() dri ...

  2. java爬虫--使用正则表达式获取网页中的email

    package com.enation.newtest; import java.io.*; import java.util.regex.*; import java.net.*; public c ...

  3. theMatrix代码雨效果

    做了一个代码雨效果放在个人主页:  https://lanleilin.github.io/lanGallery/index.html 代码: <!DOCTYPE html> <ht ...

  4. 【Android开发日记】之入门篇(十)——Android应用配置文件解析

    在Android基于组件的应用设计架构中,配置文件是一个很重要的元素.它将应用所包含的组件.各组件的能力和配置以及应用环境介绍给Android框架层的各个服务,让Android知道如何去调度应用中的各 ...

  5. 知问前端——对话框UI(二)

    dialog()方法的事件 除了属性设置外,dialog()方法也提供了大量的事件,这些事件可以给各种不同状态时的对话框提供回调函数,这些回调函数中的this值等于对话框内容的div对象,不是整个对话 ...

  6. bzoj4418 [Shoi2013]扇形面积并

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4418 [题解] 被题目名称吓死系列. 用一棵线段树维护当前有哪些半径. 那么将扇形差分,每段 ...

  7. Altium 原理图出现元件 “Extra Pin…in Normal of part ”警告

    原理是因为元器件库中的元器件的所有模式MODE不能和pcb中的引进匹配造成的,那什么又是MODE呢, 看下买的图便很清楚了, MODE可以理解为不同的视图模式吧. 然后赶紧打开原理图库中的有问题的元器 ...

  8. 明远智睿IMX6Q Android4.4.2移植USBWIFI(RTL8188EUS)

    移植过程中得到网友的不少帮助,很感谢!为了让更多的网友不像我这样折腾,特写此文以做参照.过程中主要参考< Realtek_Wi-Fi_SDK_for_Android_KK_4_4.pdf > ...

  9. jQuery中的each关键词

    #转载请留言联系 从一个简单的例子引入,jQuery里的each有什么作用? <!DOCTYPE html> <html lang="en"> <he ...

  10. Selenium2+python自动化3-解决pip使用异常【转载】

    一.pip出现异常 有一小部分童鞋在打开cmd输入pip后出现下面情况:Did not provide a commandDid not provide a command?这是什么鬼?正常情况应该是 ...