Spring的事务步骤

一、事务处理方案:

Spring框架中提供的事务处理方案:一共有两种: 

1.适合中小项目使用的, 注解方案:

        注解的方式做事务用起来简单,灵活,方便,中小型项目中用它比较方便,因为只需要@Transactional注解就OK了;这种方式用的就是spring框架自己提供的事务的处理机制,@Transactional注解的机制是AOP的环绕通知:在方法执行之前开启事务,方法执行之后回滚或者提交事务。@Transactional注解常见的属性包括:隔离级别、传播行为、超时时间以及回滚规则

2.使用 AspectJ 的 AOP 配置管理事务(掌握)

        在大型项目中如何做事务的:

        实现步骤: 都是在xml配置文件中实现。使用 XML 配置文件配置事务代理的方式的不足是,每个目标类都需要配置事务代理。当目标类较多,配置文件会变得非常臃肿。

        使用 XML 配置文件的方式可以自动为每个符合切入点表达式的类和方法生成事务代理,使用aspectj框架功能,在spring配置文件中声明类和方法需要的事务。这种方式的业务方法和事务配置完全分离的,业务代码就是业务代码,事务就是事务。 

二、总体思路: 

  1)你需要指定要使用的事务管理器实现类,使用<bean>

  2)需要指定哪些类,哪些方法需要加入事务的功能

  3)需要指定方法需要的隔离级别,传播行为,超时

<dependency> 
<groupId>junit</groupId> 
<artifactId>junit</artifactId> 
<version>4.11</version> 
<scope>test</scope> 
</dependency> 

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-context</artifactId> 
<version>5.2.5.RELEASE</version> 
</dependency> 

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-aspects</artifactId> 
<version>5.2.5.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId> 
<artifactId>spring-tx</artifactId> 
<version>5.2.5.RELEASE</version> 
</dependency> 

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-jdbc</artifactId> 
<version>5.2.5.RELEASE</version> 
</dependency> 

<dependency> 
<groupId>org.mybatis</groupId> 
<artifactId>mybatis</artifactId> 
<version>3.5.1</version> 
</dependency> 

<dependency> 
<groupId>org.mybatis</groupId> 
<artifactId>mybatis-spring</artifactId> 
<version>1.3.1</version> 
</dependency> 

<dependency> 
<groupId>mysql</groupId> 
<artifactId>mysql-connector-java</artifactId> 
<version>5.1.9</version> 
</dependency> 

<dependency> 
<groupId>com.alibaba</groupId> 
<artifactId>druid</artifactId> 
<version>1.1.12</version> 
</dependency> 

插件 
<build> 
<resources> 
<resource> 
<directory>src/main/java</directory><!--所在的目录--> 
<includes><!--包括目录下的.properties,.xml 文件都会扫描到--> 
<include>**/*.properties</include> 
<include>**/*.xml</include> 
</includes> 
<filtering>false</filtering> 
</resource> 
</resources> <plugins> 
<plugin> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>3.1</version> 
<configuration> 
<source>1.8</source> 
<target>1.8</target> 
</configuration> 
</plugin> 
</plugins> 
</build> 

spring框架中提供的事务处理方案:一共有两种: 

  1. 适合中小项目使用的, 注解方案:

        spring框架自己用aop实现给业务方法增加事务的功能, 使用@Transactional注解增加事务,@Transactional注解的机制是AOP的环绕通知:在方法执行之前开启事务,方法执行之后回滚或者提交事务:

  1.  @Transactional注解是spring框架自己的注解,放在public方法的上面,表示当前方法具有事务。可以给注解的属性赋值,表示具体的隔离级别,传播行为,超时时间,异常信息等等
  2.   @Transactional 若用在方法上,只能用于 public 方法上。对于其他非 public 方法,如果加上了注解@Transactional,虽然 Spring 不会报错,但不会将指定事务织入到该 方法中。因为 Spring 会忽略掉所有非 public 方法上的@Transaction 注解。
  3.   若@Transaction 注解在类上,则表示该类上所有的方法均将在执行时织入事务。

三、使用@Transactional的步骤:

  1.声明事务管理器对象

    在applicationContext.xml文件中声明事务管理器对象:

    <bean id="xx" class="DataSourceTransactionManager">  

  (因为你是用的事务管理器的mybatis实现类)

事务管理器提交事务,回滚事务,但是它必须得知道连接哪一个数据库,数据库的信息 :

  2.开启事务注解驱动:

         告诉spring框架,我要使用注解的方式管理事务。

3.在业务方法上面加入@Trancational

 rollbackFor:表示发生指定的异常时一定回滚

  1. Spring框架首先会检查方法抛出的异常是不是在rollbackFor的属性值中,如果异常在rollbackFor列表中,不管是什么类型的异常,一定会回滚;
  2. 如果你抛出的异常不在rollbackFor列表中,Spring会判断异常是不是RuntimeException,如果是一定回滚
  3. 总结:抛出指定异常或者是运行时异常都会回滚  

四、使用 AspectJ 的 AOP 配置管理事务

1.加入aspectj 的依赖坐标:

  1)要使用的是aspectj框架,在pom.xml文件中需要加入aspectj 的依赖坐标

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>5.2.5.RELEASE</version>

</dependency>
2.声明事务管理器对象:

    在applicationContext.xml文件中声明事务管理器对象:

    <bean id="xx" class="DataSourceTransactionManager">  

  (因为你是用的事务管理器的mybatis实现类)

 3.配置业务方法的事务属性
  1. 声明方法需要的事务类型(配置方法的事务属性【隔离级别,传播行为,超时】)
        为事务通知设置相关属性。用于指定要将事务以什么方式织入给哪些方法。例如,应用到 buy 方法上的事务要求是必须的,且当 buy 方法发生异常后要回滚业务。

        你可以使用通配符,但是方法的命名需要有一定的规范,所有添加都是add开头  所有修改都是modify开头 所有删除都是remove开头...

4.配置切入点表达式:

        指定哪些类需要用到事务:

5.配置增强器:

         写的这些类得和那些需要用到事务的方法关联上:

  • 49
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring声明式事务管理包括以下几个步骤:1. 在 Spring 配置文件中配置事务管理器;2. 使用 @Transactional 注解将需要事务管理的方法标注;3. 调用该方法,Spring 将自动开启事务并在事务结束时自动提交或回滚事务。 ### 回答2: Spring声明式事务管理的使用步骤如下: 1. 配置事务管理器:在Spring的配置文件中,需要配置一个事务管理器,例如使用Spring提供的JtaTransactionManager、DataSourceTransactionManager等。事务管理器负责管理事务的开始、提交、回滚等操作。 2. 配置事务通知:在需要进行事务管理的方法上添加事务通知的注解,通常使用@Transactional注解。该注解可以添加在类级别或方法级别上,表示该类或方法需要进行事务管理。 3. 配置事务属性:通过@Transactional注解的属性来配置事务的特性,包括事务的隔离级别、传播行为、只读属性等。事务的隔离级别可以通过设置Isolation枚举类的值来指定,默认为DEFAULT,传播行为可以通过Propagation枚举类的值来指定,默认为REQUIRED。 4. 启用事务管理:在Spring的配置文件中,需要启用事务管理,可以通过配置tx命名空间或使用@EnableTransactionManagement注解来开启事务功能。 5. 在需要进行事务管理的方法中进行操作:在需要进行事务管理的方法中,可以通过调用其他方法或访问数据库等进行操作,当方法执行结束时,如果发生异常,则事务会自动回滚,否则会提交事务。 总结: Spring声明式事务管理使用步骤包括配置事务管理器、配置事务通知、配置事务属性、启用事务管理和在需要进行事务管理的方法中进行操作。通过这些步骤,我们可以简化事务管理的代码,并且使得事务管理更加便捷和高效。 ### 回答3: Spring的声明式事务管理是通过使用@Transactional注解来实现的。下面是使用Spring声明式事务管理的步骤: 1. 配置数据源:在Spring的配置文件中,配置数据源,可以使用JDBC或者连接池来配置数据源。 2. 配置事务管理器:在Spring的配置文件中,配置事务管理器,可以使用Spring自带的事务管理器,如DataSourceTransactionManager或者HibernateTransactionManager。 3. 配置事务的属性:通过在需要进行事务管理的方法上添加@Transactional注解来指定事务的传播行为、隔离级别、超时时间等属性。 4. 启用事务支持:在Spring的配置文件中,添加<tx:annotation-driven/>配置,开启对@Transactional注解的支持。 5. 使用事务管理的方法:在需要进行事务管理的方法上添加@Transactional注解,表示这个方法需要在事务控制下执行。 6. 异常处理:在事务管理的方法中,如果发生了异常,Spring会根据事务的属性进行相应的处理,如回滚事务或者提交事务。 通过以上步骤,我们可以使用Spring的声明式事务管理来实现对数据库的事务管理。使用声明式事务管理可以减少编码量,提高代码的可维护性,同时也使得事务管理的配置更加简洁明了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值