使用基于注解的AOP的事务管理
@Transactional
1. 例子
Transactional(readOnly = true, propagation=Propagation.REQUIRED)
@Transactional(propagation=Propagation.REQUIRED)
public TradeData placeTrade(TradeData trade) throws Exception {...}
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
public TradeData placeTrade(TradeData trade) throws Exception {...}
2. xml 配置
<beans>
<tx:annotation-driven transaction-manager="transactionManager"/>
//使用@Transactional 注解创建恰当的事务管理切面
<aop:aspectj-autoproxy/>// 通知匹配的bean
<beans>
3. <tx:annotation-driven>标签
<tx:annotation-driven>标签是使用注解驱动的事务管理支持的核心, 所有属性如下
transactionManager: 指定到现有的PlatformTransactionManger bean 的引用, 通知会使用该引用
mode: 指定spring事务管理框架创建通知bean的方式,可用的有proxy 和 aspectj, 前者是默认值, 表示通知对象是个jdk代理,后者表示spring aop会使用ajpectj创建代理
order: 指定创建切面的顺序, 只要目标对象有多个通知就可以使用该属性
proxy-target-class: 该属性如果为true , 就表示你想要代理目标类而不是bean 所实现的所有接口
4. @Transactional
所有属性
propagation: 指定事务定义中使用的传播
isolation: 指定事务的隔离级别
timeout: 超时时间
readonly : 如果为true, 事务标致为只读
noRollbackFor: 目标方法可抛出的异常所构成的数组,但通知仍会提交事务
rollbackFor: 异常所构成的数组,如果目标方法抛出了这些异常,通知就会回滚
5. 缺点
a. 不的不为所有需要事务的方法加上@Transactional
b. 把@Transactional 加在整个类上, 不需要事务的方法也运行在事务中
分享到:
相关推荐
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
在Spring中,我们可以使用@Transactional注解来标记需要进行事务管理的方法。这个注解包含了一些可选属性,如`propagation`(事务传播行为)、`isolation`(隔离级别)、`timeout`(超时时间)和`rollbackFor`(触发...
在Spring框架中,声明式事务管理是通过AOP(面向切面编程)实现的,它为开发者提供了方便、高效且灵活的事务管理机制。本文将深入探讨如何利用Spring的声明式事务来处理业务操作中的数据一致性问题,以及相关源码...
- 事务管理需要在Spring配置中启用,例如在xml配置中添加 `<tx:annotation-driven transaction-manager="transactionManager"/>` 或者在Java配置中使用 `@EnableTransactionManagement` 注解。 了解了这些知识点后...
在实际项目中,`springtransaction`工程可能是包含了一个完整的示例,用于演示如何在MyEclipse环境中配置和使用Spring的事务管理功能。开发者可以通过导入此工程,学习和实践Spring事务管理的配置与使用,从而更好地...
在这个例子中,`<tx:annotation-driven>`启用基于注解的事务管理,`transactionManager`指向一个`HibernateTransactionManager`实例,它负责实际的事务操作。 总的来说,Spring和Hibernate的集成提供了强大的数据...
在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...
Spring的声明式事务管理是通过配置文件或注解的方式来实现的。这种方式将业务逻辑与事务管理代码分离,使得代码更加清晰且易于维护。 ##### 1.2 配置Spring声明式事务 要启用Spring的声明式事务管理,通常需要做...
本篇文章将详细探讨Spring中的三种事务管理方式:编程式事务管理、声明式事务管理和基于注解的事务管理。 首先,编程式事务管理是通过编码来控制事务的开始、提交、回滚等操作。Spring提供了...
1. XML配置:在Spring的配置文件中,使用`<tx:advice>`定义事务处理规则,然后通过`<aop:config>`或`<aop:aspect>`将事务规则应用到特定的业务方法上。 2. 注解驱动:使用@Transactional注解在方法上,Spring会自动...
这个名为"springTransaction.rar"的压缩包文件包含了一个关于Spring事务管理的小型示例,旨在演示如何使用Spring的事务传播机制来处理数据库操作,特别是转账功能的实现。 首先,让我们了解一下什么是事务。在...
- **避免过度使用AOP:**过度使用AOP可能会导致系统复杂度增加,应谨慎考虑是否真正需要引入AOP。 - **注意性能影响:**虽然AOP可以提高代码的可维护性和可扩展性,但过度使用可能会对性能产生负面影响。 #### 代码...
实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...
- XML配置:在Spring的配置文件中,可以使用`<tx:advice>`定义事务处理规则,然后通过`<aop:config>`或`<aop:aspect>`进行切面配置,将事务处理与业务代码关联。 - 注解驱动:Spring 2.5以后,推荐使用注解来管理...
在 "17-Prj-Spring-Struts-IBatis-AOP-Transaction" 这个项目中,这四个框架被集成在一起,形成一个强大的 web 应用开发解决方案。Spring 作为整个系统的基石,负责依赖注入和事务管理;Struts 2 处理 HTTP 请求,...
1. **注解驱动的事务管理**: 使用`@Transactional`注解在方法或类上,Spring会自动识别并处理事务。例如: ```java @Service public class UserService { @Transactional public void createUser(User user) {...
本文将详细介绍Spring事务管理的四种方式:编程式事务管理、声明式事务管理、PlatformTransactionManager接口以及TransactionTemplate。 1. **编程式事务管理**:这是一种手动控制事务的方式,通过在代码中调用`...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员将关注点分离,例如日志记录、事务管理、权限检查等,这些通常被称为横切关注点,从核心业务逻辑中抽离出来。基于注解的AOP实现是Spring提供的一...
4. **通知应用**:使用`aop:advisor`将事务通知应用到之前定义的切入点上。 #### 四、总结 通过上述示例可以看出,Spring事务管理不仅支持编程式事务管理,还提供了更为简便的声明式事务管理方式。在实际开发中,...