事务代理标准写法
<!--DAO层接口实现 -->
<bean id="userDAO" class="net.test.dao.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--业务层接口实现,把DAO注入到Service里面 -->
<bean name="userServiceTarget" class="net.test.service.UserService">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
<!--spring代理业务层的事务管理 -->
<bean id="userServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
<property name="target">
<ref bean="userServiceTarget" />
</property>
</bean>
事务代理简写法
<bean id="baseTxProxy" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="userDAO" class="net.test.dao.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userServiceProxy" parent="baseTxProxy">
<property name="target">
<bean class="net.test.service.UserService">
<property name="userDAO">
<ref local="userDAO" />
</property>
</bean>
</property>
</bean>
事务自动化代理写法
<!-- 定义事务拦截器bean -->
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!--定义BeanNameAutoProxyCreator-->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<!--
所有名字以DAO,Service结尾的bean,
将由该"bean后处理器"为其创建事务代理;
实际上应该在业务层进行事务管理,
这里只是举一个简单例子
-->
<value>*DAO,*ServiceProxy</value>
</property>
<!--下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
<property name="interceptorNames">
<list>
<!--可以增加其他的拦截器-->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="userDAO" class="net.test.dao.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userServiceProxy" class="net.test.service.UserService">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
转自:http://www.blogjava.net/beauty9235/archive/2008/08/18/222841.html
分享到:
相关推荐
通过深入研究 Spring 的事务配置,可以总结出五种不同的配置方式,每种方式都有其特点和适用场景。 第一种方式:每个 Bean 都有一个代理 这种方式是最简单的一种配置方式,每个 Bean 都需要定义一个代理,以便实现...
根据提供的信息,我们可以深入探讨Spring框架中的声明式事务配置及其多种实现方式。声明式事务管理是一种简化事务管理的方式,它允许开发人员通过配置而非编程来指定事务边界,从而减少了代码的复杂性并提高了可维护...
下面是五种Spring事务配置方式的详细说明: **第一种方式:基于代理的声明式事务管理** 在这个配置中,每个业务对象(如DAO)都有一个事务代理。`TransactionProxyFactoryBean`被用来创建这个代理,它需要指定事务...
Spring提供了多种事务配置方式,以适应不同的应用场景。以下是对这些配置方式的详细解释: 1. **编程式事务管理(Programmatic Transaction Management)** 编程式事务管理允许你在代码中直接控制事务的开始、提交...
### Spring 事务配置的五种方法详解 #### 一、引言 在现代软件开发过程中,事务处理是一项至关重要的技术,特别是在涉及数据库操作时。Spring 框架提供了丰富的事务管理功能,支持多种不同的配置方式来满足不同...
总结,Spring事务配置的五种方式各有特点,需要根据项目实际需求进行选择。编程式事务灵活但侵入性强,声明式事务简洁且易于维护,分布式环境下则需考虑JTA和传播行为。在实践中,结合使用和灵活调整,才能确保事务...
在OSGi(Open Service ...总结,解决OSGi Spring事务配置问题需要对OSGi和Spring有深入理解,包括它们的类加载机制、服务注册与发现以及事务管理的原理。遵循上述步骤,应该能成功地在OSGi环境中配置并运行Spring事务。
### Spring事务配置详解 #### 一、Spring事务配置概述 Spring框架提供了强大的事务管理功能,支持编程式事务管理和声明式事务管理。其中声明式事务管理是通过AOP(面向切面编程)技术来实现的,它能让我们在不修改...
### Spring 事务配置详解 #### 一、Spring 事务配置概览 在现代软件开发过程中,事务管理是一项至关重要的技术,特别是在涉及数据库操作时。Spring 框架提供了丰富的事务管理支持,使得开发者能够轻松地将事务管理...
总结来说,"spring事务操作试验"涵盖了Spring框架中的事务管理基础,包括声明式和编程式事务,以及它们在JDBC操作中的应用。通过实验,读者可以更好地理解事务的生命周期、隔离级别和回滚规则,这些都是构建健壮、...
首先,Spring事务配置通常涉及三个关键组件: 1. **DataSource**: 数据源是连接到数据库的桥梁,用于获取数据库连接。在Spring中,可以通过`org.springframework.jdbc.datasource.DriverManagerDataSource`或`org....
本文将详细介绍Spring中的三种事务配置方式:编程式事务管理、声明式事务管理以及基于注解的事务管理。 **1. 编程式事务管理** 编程式事务管理是通过编程的方式手动控制事务的开始、提交、回滚等操作。主要使用`...
总结来说,Spring的事务配置可以通过调整DataSource、TransactionManager以及代理机制中的事务属性来适应不同的数据访问技术和事务需求。通过上述的配置方式,Spring能够灵活地管理事务,保证了业务操作的一致性和...
本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...
在IT行业中,Spring框架...总结,Spring事务管理是其核心功能之一,它简化了事务处理的复杂性,使开发者能够专注于业务逻辑。通过学习和实践案例,我们可以更好地掌握Spring事务的使用,提高应用程序的稳定性和可靠性。
### Spring事务管理——声明式事务配置详解 #### 引言 在现代的Java企业级应用开发中,事务处理是确保数据一致性和完整性的重要机制。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务管理方式。...
本文将对三种不同的事务配置方式进行深入探讨:本地事务、全局事务以及结合动态数据源的事务管理。这些配置方式在处理多数据源和复杂业务场景时具有不同的优势和适用性。 首先,我们来看“本地事务”。本地事务通常...
总结来说,Spring事务管理失效的原因是多方面的,涵盖从代理模式原理到AOP的实现细节,再到异常处理机制,以及事务传播和隔离级别的配置等多个层面。开发者需要深入理解Spring框架的内部机制,才能在实际开发中有效...
本文将主要介绍Spring事务配置的两种常见方法:第四种是使用`<tx>`标签配置的拦截器,第五种是全注解的方式。这两种方法都是基于Spring的声明式事务管理,它们能够自动处理事务的开启、提交、回滚等操作,使得开发者...