`
56553655
  • 浏览: 204217 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

黄晓童SPRING学习笔记:Spring的事务管理

阅读更多

Spring的定义
对DI的初步理解
对AOP的初步理解
对DI的深入探究
对AOP的深入探究
Spring的事务管理
Spring MVC

首先来说一些概念性的东西,就是事务的的ACID属性:
原子性:事务中的操作要么都发生要么都不发生;
一致性:事物一旦结束了,数据不应当被破坏;
隔离性:一个用户的操作不能和其他用户的操作相混淆;
持久性:一旦事务完成,应当被持久化。

 spring是不直接管理事务的,而是交给事务管理器。所有的spring事务管理器都是实现自PlatformTransactionManager接口的,比如,hibernate的事务管理器为HibernateTransactionManager类、JDBC或iBatis的事务管理器是DataSourceTransactionManager类等等。这里就不一一列举了,用到的话可以去查资料。下面给出了JDBC事务管理器的配置的例子:

<bean id=”transactionManager” class=”org.springframework.jdbc.datasource. DataSourceTransactionManager”>
 <property  name=”dataSource”  ref=”yourDataSourceBean” />
</bean>

 

 下面我们就尝试用spring的TransactionTemplate方式编写一个事务,TransactionTemplate是通过一种叫做回叫机制的实现的。

public  void  youMethodName()        //要加入事务管理的方法的名字
{
 transactionTemplate.execute
 (
  new  TransactionCallback()
  {
   public  Object  doInTransaction( TransactionStatus  ts )
   {
    try
    {
     ………            //这里写原来的业务逻辑代码
    }
    catch( Exception e )
    {
     ts.setRollbackOnly();
    }
    
    return  null;
   }
  }
 )
}

 

 当然,在这个类的youMethodName方法中使用的transactionTemplate是需要被注入进来的。像如下这样:(其中飘红的依赖可以是上面说到的任何一种spring事务管理器。)

<bean id=”youClass” class=”com.alibaba.YouClass”>
 <property  name=” transactionTemplate”>
  <bean  class=”org.springframework.Transaction.support. TransactionTemplate”>
   < property  name=” transactionManager”  ref=” transactionManager”  />
  </bean>
 </ property>
</bean>

 

 下面来说一下spring的声明式事务。spring的声明式事务共有三种:一种是基于aop代理bean的方式;一种是基于简单的xml声明的tx命名空间的方式;最后一种是注释驱动事务。先来说一下spring定义事务的几个参数:传播行为、隔离级别、只读、事务超时、回滚规则。下面定义的是第一种声明式事务(基于aop代理bean的方式):

<bean id=”someService” class=” org.springframework.Transaction.interceptor.TransactionProxyFactoryBean”>
<property  name=”target”  ref=”someServiceTarget”  />
<property  name=”proxyInterfaces”  ref=”com.alibaba.service.SomeService”  />
<property  name=” transactionManager”  ref=” transactionManager”  />
<property  name=” transactionAttributes”>
 <props>
  <prop  key=”add*”>…</props>
  <prop  key=”*”>…</props>
 </props>
</property>
</bean>

 

 上面的transactionManager可以是前面提到的任何一种spring事务管理器。而transactionAttributes属性则是指明了事务的具体参数。它含有一个props集,该集含有N个prop属性,每个<prop>的键是一个方法名称的模式,而其具体指则是事务的具体参数。其中事务的具体参数的顺序为:传播行为(必选)、隔离级别(可选)、是否只读(可选)、回滚规则(可选),他们之间以逗号隔开。

下面的则是以tx命名空间声明的事务:

<tx:advice  id=”txAdvice”  transaction-manager=” transactionManager”>
<tx:attributes>
<tx:method  name=”add*”  ……>
<tx:method  name=”*”  ……>
</tx:attributes>
</tx:advice>

 

 其中“transaction-manager”指明了spring的事务管理器,<tx:attributes>则类似前面提到的<props>。省略号部分的属性名包括:isolation(事务隔离级别)、no-rollback-for(哪些异常事务是不需要回滚的)、propagation(事务的传播规则)、read-only(是否只读)、rollback-for(哪些异常应该回滚事务)、timeout(超时时间)。当然,这只是事务通知,我们还没有定义哪些bean应该被通知。

<aop:config>
 <aop:advistor  pointcut=””  advice-ref=” txAdvice”  />
</aop:advistor>

 

 最后一种实现spring事务的方式是注释驱动的方式。在类或接口中都可以使用。只需要加上@Transactional(......)即可,括号里加上具体的事务参数。当然,配置文件中要加上如下代码:

<tx:annotation-driven  transaction-manager=”txManager”>

 

分享到:
评论

相关推荐

    学习笔记:尚硅谷Spring6基础篇

    ### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...

    Springcloud学习笔记.md

    Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...

    Spring学习笔记+学习源码.zip

    6. **事务管理**:Spring提供了声明式和编程式事务管理,使得事务处理更加方便。 7. **Spring Boot**:近年来,Spring Boot简化了Spring应用的初始设置,提供了自动配置和起步依赖,使得开发更加高效。 8. **...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring学习笔记(精华全记录)

    3. **面向切面编程 (AOP)**:Spring支持面向切面编程,这是一种将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来的编程范式。通过AOP,开发者可以在不修改业务逻辑代码的情况下添加新的功能。 4. **ORM...

    Spring学习笔记( spring视频笔记)

    Spring学习笔记( spring视频笔记)

    Spring.NET学习笔记16——事务管理Demo源码

    在本篇“Spring.NET学习笔记16——事务管理Demo源码”中,我们将深入探讨Spring.NET的事务管理机制及其实际应用。 事务管理是软件开发中的关键部分,它确保数据库操作的一致性和完整性。Spring.NET通过其事务管理...

    Spring学习笔记 自我总结

    spring学习笔记

    spring学习笔记

    - **源代码开放**:Spring框架的源代码是公开的,虽然它并不是基于任何特定的标准,但其设计模式和最佳实践仍然值得学习。 ##### 2. 使用Spring的原因 - **解决J2EE开发中的常见问题**:传统的J2EE开发存在大量重复...

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring学习笔记.zip

    面向切面编程是Spring提供的另一个重要功能,它允许开发者将关注点分离,比如日志、事务管理等,从主业务逻辑中抽取出来,形成独立的“切面”。切面可以在特定的“连接点”(如方法调用)上织入,提高了代码的复用性...

    Spring学习笔记(马士兵spring视频笔记).doc

    Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc

    Spring技术内幕:深入解析Spring架构与设计原理(第2版)+.pdf

    - **核心容器**:Spring框架的核心容器包括BeanFactory和ApplicationContext。BeanFactory是最基本的容器,负责管理对象的生命周期和配置数据。ApplicationContext则是在BeanFactory的基础上扩展了更多功能,比如...

    Spring学习笔记.doc

    - **简化开发过程**:Spring提供了一系列的工具和服务,例如事务管理、数据访问、日志记录等,帮助开发者快速构建复杂的应用程序。 #### 二、Spring框架的组成 Spring框架由七个核心模块组成: 1. **Spring Core*...

    马士兵老师spring框架学习笔记

    7. **Spring AOP事务管理**:Spring提供了声明式和编程式的事务管理,开发者可以通过配置或注解轻松地控制事务的边界,保证数据的一致性。 8. **Spring Boot**:作为Spring的现代化版本,Spring Boot简化了Spring...

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    Spring技术内幕:深入解析Spring架构与设计原理

    Spring的事务管理是一个非常重要的功能,它提供了声明式事务管理,允许开发者通过配置而非硬编码的方式管理事务。这使得事务管理可以独立于业务逻辑进行测试和维护,大大提高了应用的可靠性和开发效率。 Spring框架...

    spring hibernate 事务管理学习笔记(二)

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    Spring学习笔记(18)----使用Spring配置文件实现事务管理

    在Spring框架中,事务管理是核心功能之一,它确保了数据的一致性和完整性。这篇"Spring学习笔记(18)-...这篇笔记详细阐述了Spring配置文件实现事务管理的方法,是初学者和进阶者理解Spring事务管理机制的重要参考资料。

    springsecurity学习笔记

    4. **Filter Chain**:Spring Security通过一系列过滤器形成一个过滤链,每个过滤器都有特定的任务,如BasicAuthenticationFilter处理基本认证,RememberMeAuthenticationFilter处理记住我功能等。 5. **Session ...

Global site tag (gtag.js) - Google Analytics