`

spring注解式事务管理实例@Transactional(propagation=Propagation.REQUIRED,readOnly=false)

 
阅读更多

spring注解式事务管理实例@Transactional(propagation=Propagation.REQUIRED,readOnly=false)

(2011-07-05 14:27:03)
标签: 

杂谈

 

一.spring配置文件

这里使用spring命名空间,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    default-  default-lazy-init="true">

 <context:property-placeholder location="classpath:jdbc.properties" />


 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="initialSize" value="${jdbc.initialSize}" />
  <property name="maxActive" value="${jdbc.maxActive}" />
  <property name="maxIdle" value="${jdbc.maxIdle}" />
  <property name="minIdle" value="${jdbc.minIdle}" />
  <property name="maxWait" value="${jdbc.maxWait}" />
 </bean>

 <!-- 设定transactionManager -->
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
 </bean>

<!--启动spring注解功能-->

 <tx:annotation-driven transaction-manager="transactionManager" />

 
</beans>

说明:

1.如果事务管理器的id是transactionManager,这里可以不对transaction-manager进行配置,即<tx:annotation-driven />就可以。

2.这个配置是告诉spring在类(接口)层面或者方法层面上检查应用程序上下文中的所有标准了@Transactional的bean,spring将自动把事务通知的内容通知给它。

3.这个通知的事务参数将由@Transactional注释的参数来定义。

4.如果注释的是接口,则该接口的所有实现类都将被事务化。

二.使用@Transactional标注bean

package com.netqin.bbs.initUserData;

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.netqin.bbs.initUserData.service.InitUserDataService;
import com.netqin.bbs.utils.Constant;
import com.netqin.bbs.utils.ReadFileUtil;

@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)//设置默认的事务管理策略,即没有标注@Transactional的方法的事务处理方式,意思为不要求方法必须在一个事务中运行
public class InitUserData {
 
 @Transactional(propagation=Propagation.REQUIRED,readOnly=false)
 public void method1(){

  ……………………

  ……………………   
 
 }

 

 public void method2(){

  ……………………

  ……………………   
 
 }

}

记得要将这个bean加入到spring上下文中。

一般来说,上述两种事务策略就可以满足要求了,不过需要注意,注解功能的使用需要在项目中加入cglib-nodep-x.x_x.jar

分享到:
评论

相关推荐

    Spring3事务管理——使用@Transactional 注解.rar

    `@Transactional`注解来自`org.springframework.transaction.annotation`包,它是Spring对声明式事务管理的主要支持。这个注解可以应用在类或方法级别,用来定义事务的边界。当注解在类级别时,所有该类的公共方法都...

    Spring声明式事务@Transactional知识点分享

    "Spring声明式事务@Transactional知识点分享" 在 Spring 框架中,@Transactional 注解是实现声明式事务的关键。通过 @Transactional 注解,可以指定事务的传播行为、隔离级别、读写控制等属性。 首先,@...

    Spring事务管理的三种方式

    本篇文章将详细探讨Spring中的三种事务管理方式:编程式事务管理、声明式事务管理和基于注解的事务管理。 首先,编程式事务管理是通过编码来控制事务的开始、提交、回滚等操作。Spring提供了...

    Spring学习笔记(17)----使用Spring注解方式管理事务

    编程式事务管理需要开发者手动控制事务的开始、提交、回滚等操作,而声明式事务管理则通过配置或注解来定义事务边界,让Spring自动处理事务生命周期。 1. **注解驱动的事务管理** Spring提供了一些关键的注解,如`...

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    在上面的代码中,我们添加了 @Transactional 注解,该注解指定了事务的传播行为(Propagation.REQUIRED)和 readOnly 属性为 false。这将确保 Hibernate Session 被正确地绑定到当前线程,并执行插入操作。 总结 ...

    使用Spring的声明式事务----Annotation注解方式

    在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...

    Spring @Transactional注解失效解决方案

    在 Spring 框架中,@Transactional 注解是用于管理事务的关键工具之一。但是,在实际开发中,我们经常会遇到 @Transactional 注解失效的问题。本篇文章将详细介绍 @Transactional 注解失效解决方案,通过示例代码和...

    Java注解@Transactional事务类内调用不生效问题及解决办法

    在Spring框架中,@Transactional注解是通过AOP代理来实现事务管理的。在默认情况下,只有外部调用目标方法时,Spring才会生成代理对象来管理事务。但是,如果在同一个类中的其他方法调用有@Transactional注解的方法...

    Spring ax/aop声明式事务配置实例

    声明式事务管理是Spring提供的一种事务管理方式,开发者无需在业务代码中显式调用事务开始、提交、回滚等操作,只需在配置文件或注解中声明事务属性即可。这种方式降低了代码的耦合度,提高了可维护性。 三、配置...

    spring注解事务实现demo

    Spring框架在事务管理方面提供了两种主要的实现方式:编程式事务管理和声明式事务管理。本篇文章将重点关注声明式事务管理中的注解驱动方式,也就是基于`@Transactional`注解的事务实现。这种方式使得代码更加简洁,...

    spring的@Transactional注解详细用法1

    `@Transactional`注解允许指定这些属性,如`propagation`(传播行为)、`isolation`(隔离级别)、`readOnly`(只读事务)等。 总的来说,Spring的`@Transactional`注解为开发者提供了方便且强大的声明式事务管理...

    基于java的企业级应用开发:声明式事务管理.ppt

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 30, readOnly = false) public void myMethod() { // 业务逻辑 } } ``` 在这里,`myMethod`方法会被Spring...

    spring事务配置详解

    3. 代理机制:这是Spring事务管理的核心,它决定了何时以及如何应用事务策略。代理可以是AOP(面向切面编程)代理,例如通过`TransactionProxyFactoryBean`或基于注解的事务管理。 以下是Spring中声明式事务配置的...

    spring注解式事务

    "spring注解式事务" Spring框架提供了基于注解的方式来管理事务,使用@Transactional注解来标记需要事务管理的方法。该注解可以被应用于public方法上,对于非public方法,如果标记了@Transactional也不会报错,但...

    什么情况会导致@Transactional事务失效?

    在Java编程中,`@Transactional`注解是Spring框架提供的一种事务管理机制,它使得开发者能够在方法级别方便地声明事务边界。然而,在某些特定情况下,`@Transactional`可能会失效,导致事务无法正常工作。以下是一些...

    spring声明式事务配置方法.docx

    除了`TransactionProxyFactoryBean`,Spring还提供了基于注解的声明式事务管理,通过在方法上添加`@Transactional`注解,可以指定事务属性,如传播行为、隔离级别、是否读写等。这种方式更加简洁,但需要代码和配置...

    Spring中的事务管理

    Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。本篇文章将重点探讨基于注解和XML配置的声明式事务管理。 ### 声明式事务管理 声明式事务管理是Spring中非常受欢迎的特性,因为它允许...

    spring_事务管理(实例代码)

    Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...

    Spring中的事务控制

    本篇文章将深入探讨Spring中的事务控制,包括事务的基本概念、事务的特性、Spring事务管理的模式以及如何在实际应用中配置和使用事务。 首先,事务是数据库操作的基本单位,确保数据的一致性和完整性。ACID(原子性...

Global site tag (gtag.js) - Google Analytics