Spring 1.x事务配置详解与推荐替代方式
需积分: 10 126 浏览量
更新于2025-01-04
收藏 48KB DOC 举报
Spring框架提供了强大的事务管理功能,使得在分布式系统中进行数据操作时可以更好地控制事务的生命周期。Spring 1.x版本中声明事务的方式虽然可用,但现在已经过时,推荐使用Spring 2.x或后续版本的方法。
首先,让我们回顾一下Spring 1.x中的事务声明配置步骤:
1. 声明事务管理器(Transaction Manager):
在XML配置文件中,通常会定义一个`HibernateTransactionManager` bean,它是基于Hibernate实现的事务管理器。如下所示:
```xml
<bean id="hibTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
```
这里,`sessionFactory`属性引用了另一个配置中的SessionFactory对象,它负责管理Hibernate数据库连接。
2. 定义业务层服务接口和代理类:
业务层的服务接口如`UsersServiceImpl`被声明为实际的服务提供者,而`TransactionProxyFactoryBean`用于创建事务代理类`usersServiceProxy`,以便在方法调用时处理事务管理。
```xml
<bean id="usersServiceImpl" class="leon.lau.diary.web.struts.service.impl.UsersServiceImpl" />
<bean id="usersServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="hibTransactionManager" />
<property name="target" ref="usersServiceImpl" />
<property name="transactionAttributes">
<!-- 配置事务传播行为 -->
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="do*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
```
`TransactionAttributes`中的`PROPAGATION_REQUIRED`策略意味着如果当前存在事务,则方法将在该事务中执行,如果没有事务,则会创建一个新的事务。其他选项如`PROPAGATION_MANDATORY`表示方法必须在事务中运行,否则抛出异常;`PROPAGATION_NEVER`则表示不允许在事务中运行,会引发异常。
尽管这些配置可以实现事务管理,但在Spring 2.x及以上版本中,推荐使用`@Transactional`注解来简化代码,并通过`PlatformTransactionManager`接口来配置事务管理器,这样可以提供更好的代码可读性和灵活性。例如,你可以直接在业务方法上添加`@Transactional`,并让Spring根据配置自动管理事务。
总结来说,Spring 1.x的事务声明配置涉及到手动设置事务管理器和代理类,每个方法需要显式配置事务传播行为。而在现代Spring框架中,推荐采用注解式事务管理和编程式事务管理,这可以大大提高开发效率和代码的可维护性。
179 浏览量
161 浏览量
627 浏览量
2019-04-21 上传
374 浏览量
161 浏览量
309 浏览量
179 浏览量
252 浏览量
laihua2006
- 粉丝: 0
- 资源: 39
最新资源
- Spring Live (160页)
- iBatis Developer's Guide中文版
- Spring iBatis Learning Notes
- Verilog Hardware Description Language
- 《linux完全命令手册》(Linux Complete Command Reference)
- 数控机床RS232通讯接口及参数介绍
- 多型与虚拟.pdf 中文版
- WindowsCE内核简介
- 经典C源程序100例
- 初学者c51学习教程
- GoF 23种设计模式解析附C++实现源码.pdf
- c++编程手册,题目
- Windows 2000 安全配置
- 中南大学微机原理课件
- UML参考手册 UML Reference
- jsp跳转的五种方式