1.(spring3mvc)
<!-- 事务管理器配置,单数据源事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
2.(stuts1+ibatis+spring)
<!-- 事务管理器配置,单数据源事务 --> <!-- transaction Manager (public) --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- uses @Transactional sign --> <tx:annotation-driven /> <!-- uses @AspectJ sign--> <aop:aspectj-autoproxy /> <!-- 配置事务的传播特性 --> <!-- default define, uses transactionManager,default * is readonly --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="insert*" /> <tx:method name="update*" /> <tx:method name="del*" /> <tx:method name="*" read-only="true" /> <tx:method name="transaction*" propagation="NESTED" /> </tx:attributes> </tx:advice> <!-- 那些类的哪些方法参与事务 --> <!-- uses AspectJ ding AOP --> <aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* com.ving.xzfw.service.impl.*Service*.*(..))" advice-ref="txAdvice" /> </aop:config>
3.(stuts2+hibernate4+spring3)
<!-- 开启AOP监听 只对当前配置文件有效 --> <aop:aspectj-autoproxy expose-proxy="true"/> <!-- 开启注解事务 只对当前配置文件有效 --> <tx:annotation-driven transaction-manager="txManager"/> <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="merge*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="put*" propagation="REQUIRED" /> <tx:method name="use*" propagation="REQUIRED"/> <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到--> <tx:method name="get*" propagation="REQUIRED" read-only="true" /> <tx:method name="count*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="list*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <aop:config expose-proxy="true"> <!-- 只对业务逻辑层实施事务 --> <aop:pointcut id="txPointcut" expression="execution(* cn.javass..service..*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config>
4.(mybatis+springMVC)
<!-- ================================= 事务控制相关 ============================================= --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/> <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" /> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="find*" propagation="SUPPORTS"/> <tx:method name="get*" propagation="SUPPORTS"/> <tx:method name="select*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="pc" expression="execution(* *.*.*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config>
相关推荐
2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离,降低了代码的耦合度。`@Transactional`注解可以应用于方法级别,表示该...
### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...
7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细讲解了如何在Spring项目中配置和使用事务管理,以及如何解决实践中遇到的问题。而"studyspring"可能是源代码目录,包含了实现这些...
这也是最常用的模式。 2. **PROPAGATION_SUPPORTS**:如果当前存在事务,那么运行在该事务内;如果没有事务,则以非事务方式执行。 3. **PROPAGATION_MANDATORY**:如果当前存在事务,那么加入该事务;如果不存在...
声明式事务管理是Spring最常用的方式,它将事务管理与业务逻辑解耦,通过AOP(面向切面编程)实现。主要有两种实现方式: - **基于XML的声明式事务管理** 在Spring的配置文件中,通过`<tx:advice>`标签定义事务...
Spring 事务配置是Spring框架中不可或缺的一部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager和代理机制。...
本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...
通常,基于注解的配置是最常用且推荐的,因为它简洁且易于理解。但具体使用哪种方式,还需要根据项目的实际情况来决定。在使用过程中,还需注意事务的隔离级别、传播行为、回滚规则等事务特性,确保事务管理正确无误...
2. **声明式事务管理**:这是Spring最常用的事务管理方式,通过配置元数据(XML或注解)来定义事务边界。例如,使用`@Transactional`注解在方法上,Spring会自动处理事务的开启、提交、回滚。这种做法简单易用,且...
Spring事务管理分为编程式和声明式两种。编程式事务管理通过编程的方式(如使用`TransactionTemplate`或直接调用`PlatformTransactionManager`)来控制事务的开始、提交、回滚等操作。而声明式事务管理则是在配置...
通过运行这些例子,你将对Spring事务管理有更深入的理解,知道何时选择编程式还是声明式事务,以及如何有效地处理事务异常。 总之,Spring的事务管理是其强大功能的一部分,无论是编程式还是声明式,都能帮助开发者...
声明式事务管理是Spring最常用的事务管理方式,它通过在配置文件或者注解中声明事务边界,将事务管理与业务代码分离。具体分为两种: - XML配置:在Spring的配置文件中,可以使用`<tx:advice>`定义事务处理规则,...
- 这是最常用的传播行为。当使用此传播行为时,如果当前存在事务,则在该事务中执行;如果没有,则创建一个新的事务。这意味着如果方法被事务性方法调用,它将参与该事务;如果是独立调用,则将启动自己的事务。 2...
本篇将深入探讨Spring声明式事务处理,这是更常用且更易于维护的方法。 在Spring框架中,声明式事务处理依赖于AOP(面向切面编程)来实现。它允许开发者通过在方法上添加特定的注解(如@Transactional)来声明事务...
声明式事务管理是Spring中最常用的事务管理方式,它通过AOP(面向切面编程)来实现。在配置文件中,我们可以通过`<tx:advice>`元素定义事务行为,并使用`<aop:config>`或`@AspectJ`注解来指定哪些方法应该在事务中...
标题 "spring最常用jar包" 暗示了我们讨论的核心是Spring框架中不可或缺的库文件,这些jar包是开发人员在使用Spring进行Java应用程序开发时最常引用的基础组件。Spring是一个开源的Java平台,它提供了全面的企业级...
这是最常用的一种传播行为,它表示如果当前存在事务,则加入该事务;如果当前不存在事务,则创建一个新的事务。例如,假设`ServiceA.methodA()`的事务传播行为被设置为`PROPAGATION_REQUIRED`,当它调用`ServiceB....
Spring Boot 自动配置了许多常用的事务管理器,如 `DataSourceTransactionManager` 和 `JpaTransactionManager`。这意味着开发者无需显式地定义这些事务管理器,Spring Boot 会根据应用中使用的持久化技术自动选择...
这种方式使用注解来指定事务行为,是目前最常用的事务配置方式。它简洁明了,能够很好地减少配置文件的复杂度。 **配置示例:** ```xml <context:component-scan base-package="com.bluesky.spring.dao"/> @Bean...