`
caixiaoge2013
  • 浏览: 5310 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring 事务最常用配置

阅读更多

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>

 

分享到:
评论

相关推荐

    Spring事务管理Demo

    2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离,降低了代码的耦合度。`@Transactional`注解可以应用于方法级别,表示该...

    spring事务配置的五种方式

    ### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...

    spring事务案例分析.zip

    7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细讲解了如何在Spring项目中配置和使用事务管理,以及如何解决实践中遇到的问题。而"studyspring"可能是源代码目录,包含了实现这些...

    spring 事务传播 demo

    这也是最常用的模式。 2. **PROPAGATION_SUPPORTS**:如果当前存在事务,那么运行在该事务内;如果没有事务,则以非事务方式执行。 3. **PROPAGATION_MANDATORY**:如果当前存在事务,那么加入该事务;如果不存在...

    spring几种事务配置详解【精】

    声明式事务管理是Spring最常用的方式,它将事务管理与业务逻辑解耦,通过AOP(面向切面编程)实现。主要有两种实现方式: - **基于XML的声明式事务管理** 在Spring的配置文件中,通过`&lt;tx:advice&gt;`标签定义事务...

    spring事务配置的5中方式

    Spring 事务配置是Spring框架中不可或缺的一部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager和代理机制。...

    Spring 事务简单完整例子

    本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...

    Spring事务配置的五种方式

    通常,基于注解的配置是最常用且推荐的,因为它简洁且易于理解。但具体使用哪种方式,还需要根据项目的实际情况来决定。在使用过程中,还需注意事务的隔离级别、传播行为、回滚规则等事务特性,确保事务管理正确无误...

    SPRING事务机制DEMO

    2. **声明式事务管理**:这是Spring最常用的事务管理方式,通过配置元数据(XML或注解)来定义事务边界。例如,使用`@Transactional`注解在方法上,Spring会自动处理事务的开启、提交、回滚。这种做法简单易用,且...

    spring 事务基于注解模式

    Spring事务管理分为编程式和声明式两种。编程式事务管理通过编程的方式(如使用`TransactionTemplate`或直接调用`PlatformTransactionManager`)来控制事务的开始、提交、回滚等操作。而声明式事务管理则是在配置...

    Spring事务例子

    通过运行这些例子,你将对Spring事务管理有更深入的理解,知道何时选择编程式还是声明式事务,以及如何有效地处理事务异常。 总之,Spring的事务管理是其强大功能的一部分,无论是编程式还是声明式,都能帮助开发者...

    spring事务管理5种方法

    声明式事务管理是Spring最常用的事务管理方式,它通过在配置文件或者注解中声明事务边界,将事务管理与业务代码分离。具体分为两种: - XML配置:在Spring的配置文件中,可以使用`&lt;tx:advice&gt;`定义事务处理规则,...

    spring事务的传播特性和事务隔离级别

    - 这是最常用的传播行为。当使用此传播行为时,如果当前存在事务,则在该事务中执行;如果没有,则创建一个新的事务。这意味着如果方法被事务性方法调用,它将参与该事务;如果是独立调用,则将启动自己的事务。 2...

    spring 事务处理

    本篇将深入探讨Spring声明式事务处理,这是更常用且更易于维护的方法。 在Spring框架中,声明式事务处理依赖于AOP(面向切面编程)来实现。它允许开发者通过在方法上添加特定的注解(如@Transactional)来声明事务...

    Spring事务管理的几种配置方式,

    声明式事务管理是Spring中最常用的事务管理方式,它通过AOP(面向切面编程)来实现。在配置文件中,我们可以通过`&lt;tx:advice&gt;`元素定义事务行为,并使用`&lt;aop:config&gt;`或`@AspectJ`注解来指定哪些方法应该在事务中...

    spring最常用jar包

    标题 "spring最常用jar包" 暗示了我们讨论的核心是Spring框架中不可或缺的库文件,这些jar包是开发人员在使用Spring进行Java应用程序开发时最常引用的基础组件。Spring是一个开源的Java平台,它提供了全面的企业级...

    spring 事务传播

    这是最常用的一种传播行为,它表示如果当前存在事务,则加入该事务;如果当前不存在事务,则创建一个新的事务。例如,假设`ServiceA.methodA()`的事务传播行为被设置为`PROPAGATION_REQUIRED`,当它调用`ServiceB....

    SpringBoot事务和Spring事务详讲

    Spring Boot 自动配置了许多常用的事务管理器,如 `DataSourceTransactionManager` 和 `JpaTransactionManager`。这意味着开发者无需显式地定义这些事务管理器,Spring Boot 会根据应用中使用的持久化技术自动选择...

    spring事务与配置

    这种方式使用注解来指定事务行为,是目前最常用的事务配置方式。它简洁明了,能够很好地减少配置文件的复杂度。 **配置示例:** ```xml &lt;context:component-scan base-package="com.bluesky.spring.dao"/&gt; @Bean...

Global site tag (gtag.js) - Google Analytics