Spring之AOP事务操作

简介: Spring之AOP事务操作 事务操作常用的API PlatformTransactionManager(平台事务管理器) Spring进行事务操作时候,主要使用一个PlatformTransactionManager接口,它表示事务管理器,即真正管理事务的对象。

Spring之AOP事务操作

事务操作常用的API

  • PlatformTransactionManager(平台事务管理器)

Spring进行事务操作时候,主要使用一个PlatformTransactionManager接口,它表示事务管理器,即真正管理事务的对象。 

  • TrancactionDefinition(事务定义信息)

事务定义信息有:

隔离级别

传播行为

PROPAGION_XXX:事务的传播行为

  • 保证在同一个事务中 
    PROPAGION_REQUIRED:支持当前事务,如果不存在,就新建一个(默认
    PROPAGION_SUPPORTS:支持当前事务,如果不存在,就不使用事务 
    PROPAGION_MANDATORY:支持当前事务,如果不存在,就抛出异常

  • 保证没有在同一个事务中 
    PROPAGION_REQUIRES_NEW:如果有事务存在,挂起当前事务,创建一个新的事务 
    PROPAGION_NOT_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务 
    PROPAGION_NEVER:以非事务方式运行,如果有事务存在,抛出异常 
    PROPAGION_NESTED:如果当前事务存在,则嵌套事务执行

超时信息

是否只读

  • TrancactionStatus(事务的状态)

记录事务的状态,平台事务管理器根据事务定义的信息进行事务的管理,事务管理的过程中产生一些状态,将这些状态记录到TrancactionStatus里面。

Spring的声明事务管理方式

Spring进行声明式事务配置的方式有两种:

  • 基于xml配置文件方式

第一步,配置事务管理器


<!-- 1.配置事务的管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 指定要对哪个数据库进行事务操作 -->
<property name="dataSource" ref="dataSource"></property>
</bean>

第二步,配置事务的增强,即指定对哪个事务管理器进行增强 


<!-- 2.配置事务的增强,指定对哪个事务管理器进行增强 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<!--
表示来配置你要增强的方法的匹配的一个规则,
注意:只须改方法的命名规则,其他都是固定的!
propagation:事务的传播行为。
-->
<tx:method name="account*" propagation="REQUIRED"></tx:method>
<!-- <tx:method name="insert*" propagation="REQUIRED"></tx:method> -->
</tx:attributes>
</tx:advice>

第三步,配置切入点和切面


<!-- 3.配置切入点和切面(最重要的一步) -->
<aop:config>
<!-- 切入点 -->
<aop:pointcut expression="execution(* cn.itcast.tx.BookService.*(..))" id="pointcut1"/>
<!-- 切面,即表示把哪个增强用在哪个切入点上 -->
<aop:advisor advice-ref="txadvice" pointcut-ref="pointcut1"/>
</aop:config>
  • 基于注解方式

第一步,配置事务管理器


<!-- 1.配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

第二步,开启事务注解


<!-- 2.开启事务的注解 -->
<tx:annotation-driven/>

第三步,在具体使用事务的方法所在的类上面添加注解:@Transactional


@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public class AccountServiceImpl implements AccountService {
private AccountDao ad ;
private TransactionTemplate tt;
@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)
public void addMoney(Double money) {
//....
}
}

 原文地址https://blog.csdn.net/mmake1994/article/details/81807489

相关文章
|
16天前
|
XML Java 数据安全/隐私保护
Spring Aop该如何使用
本文介绍了AOP(面向切面编程)的基本概念和术语,并通过具体业务场景演示了如何在Spring框架中使用Spring AOP。文章详细解释了切面、连接点、通知、切点等关键术语,并提供了完整的示例代码,帮助读者轻松理解和应用Spring AOP。
Spring Aop该如何使用
|
19天前
|
Java 开发者 Spring
Spring高手之路24——事务类型及传播行为实战指南
本篇文章深入探讨了Spring中的事务管理,特别是事务传播行为(如REQUIRES_NEW和NESTED)的应用与区别。通过详实的示例和优化的时序图,全面解析如何在实际项目中使用这些高级事务控制技巧,以提升开发者的Spring事务管理能力。
33 1
Spring高手之路24——事务类型及传播行为实战指南
|
12天前
|
XML Java 数据库连接
Spring中的事务是如何实现的
Spring中的事务管理机制通过一系列强大的功能和灵活的配置选项,为开发者提供了高效且可靠的事务处理手段。无论是通过注解还是AOP配置,Spring都能轻松实现复杂的事务管理需求。掌握这些工具和最佳实践,能
19 3
|
1月前
|
存储 缓存 Java
Spring高手之路23——AOP触发机制与代理逻辑的执行
本篇文章深入解析了Spring AOP代理的触发机制和执行流程,从源码角度详细讲解了Bean如何被AOP代理,包括代理对象的创建、配置与执行逻辑,帮助读者全面掌握Spring AOP的核心技术。
40 3
Spring高手之路23——AOP触发机制与代理逻辑的执行
|
21天前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
30 1
|
17天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
31 0
|
1月前
|
Java 编译器 Spring
Spring AOP 和 AspectJ 的区别
Spring AOP和AspectJ AOP都是面向切面编程(AOP)的实现,但它们在实现方式、灵活性、依赖性、性能和使用场景等方面存在显著区别。‌
81 2
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
134 9
|
1月前
|
Java 关系型数据库 MySQL
Spring事务失效,我总结了这7个主要原因
本文详细探讨了Spring事务在日常开发中常见的七个失效原因,包括数据库不支持事务、类不受Spring管理、事务方法非public、异常被捕获、`rollbackFor`属性配置错误、方法内部调用事务方法及事务传播属性使用不当。通过具体示例和源码分析,帮助开发者更好地理解和应用Spring事务机制,避免线上事故。适合所有使用Spring进行业务开发的工程师参考。
32 2
|
1月前
|
Java 程序员 Spring
Spring事务的1道面试题
每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。
Spring事务的1道面试题
下一篇
无影云桌面