- 浏览: 197783 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- java_基础 (26)
- java_web (15)
- javascript (9)
- extJS (0)
- dwr (0)
- guobin_ETL (1)
- guobin_ssh (17)
- guobin_webservice (1)
- guobin_jbpm (0)
- guobin_jquery (0)
- guobin_acegi (1)
- guobin_poi/jxl (2)
- guobin_multiThread (0)
- guobin_名称解释 (0)
- guobin_FLEX (0)
- guobin_php (0)
- guobin_ORACLE (1)
- guobin_mysql (0)
- guobin_linux (0)
- guobin_powerDesigner (0)
- guobin_visol (0)
- guobin_ER/STUDIO (0)
- guobin_jmesa (0)
- guobin_weblogic (0)
- guobin_kettle (0)
- guobin_一路风雨 (5)
- guobin_spark (0)
- java_xml (7)
- guobin_规则引擎 (0)
- 插件开发 (2)
- 软件管理 (3)
- spring mvc (2)
- java_jni (1)
- eclipse (1)
- oracle (0)
- 项目学习笔记 (1)
- java多线程学习记录 (9)
- websphere性能设置和日常维护 (2)
- (1)
- 系统软件架构设计 (1)
- ces (1)
- 需求分析 (2)
- IBM-CICS GATEWAY (1)
- 工具使用 (1)
- 网络信息安全编程 (1)
最新评论
-
yzh__:
学习一个
Hibernate 自关联注解方式 -
xiaoyahuang:
"2)将Sysdeo Plugin下的DevLoad ...
eclipse项目引用 -
guobin6125:
guobin6125 写道sfasshahhah评论的评论
欢迎使用Kit! -
guobin6125:
sfass
欢迎使用Kit! -
guobin6125:
tst23
欢迎使用Kit!
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
发表评论
-
从 iBatis 到 MyBatis - MyBatis 简明学习教程
2012-11-19 17:22 1175从 iBatis 到 MyBatis ... -
java 注解
2012-09-02 21:47 1103背景 最近在为公司 ... -
MyEclipse内存不足以及参数配置“ -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M ”
2012-07-17 16:00 1056MyEclipse内存不足以 ... -
StringUtils 工具类的常用方法
2012-05-20 22:33 4576StringUtils 源码,使用的是commons-lang ... -
获得List<T> T的类型
2012-05-20 21:45 841public class GenericTest { ... -
可以使用java.util.Calendar来取得相关日期信息
2012-04-19 20:31 1027import java.text.Parse ... -
提供一个JAVA过滤HTML代码和截取字符串的类(包括测试用例)
2012-03-07 22:23 1054package com.aodun.puhbs.blog ... -
ceshhisdf
2012-02-20 16:45 869ceshi -
JDKjdk1.4、jdk5.0、JDK6.0、 JDK7.0 新特性
2012-02-19 11:45 3003jdk1.4、jdk5.0、JDK6.0、 ... -
为什么Java中的long与double不是线程安全的?
2012-02-19 11:22 1878Long与double操作并 ... -
线程安全与线程不安全的区别
2012-02-19 11:15 697线程安全就是多线程访问时,采用了加锁机制(如synchr ... -
JConsole手册
2012-02-18 11:06 902http://blog.csdn.net/ajian005/a ... -
JVM调优总结(精)
2012-02-18 10:42 1994转自:http://pengjiaheng.javaey ... -
Java内存Dump文件查看和分析工具介绍
2012-02-16 23:43 1315为了查red5-0.7.0的内存泄露问题,由于dump文 ... -
探究JVM内存泄露
2012-02-16 23:32 1243WEB 服务总是莫名其妙的运行一段时间后 JVM 直接 ... -
设置JVM内存
2012-02-16 23:00 1174这里向大家简单介绍一下巧借MyEclipse设置JVM突 ... -
spring配置ibatis的jdbc方式和proxool、c3p0连接池方式
2011-06-30 10:19 1540spring配置ibatis的jdbc方式和proxool、c ... -
spring 事务管理配置-ibatis
2011-05-26 15:12 2382xml配置 Xml代码 1.<!-- 默认的数据 ... -
struts 格式化金额,日期
2011-04-11 17:50 13872010-07-21 Struts2中对数字进行格式化,1、将 ... -
log4j的日志处理
2011-03-12 12:34 929log4j的日志处理2009-06-11 ...
相关推荐
`@Transactional`注解来自`org.springframework.transaction.annotation`包,它是Spring对声明式事务管理的主要支持。这个注解可以应用在类或方法级别,用来定义事务的边界。当注解在类级别时,所有该类的公共方法都...
"Spring声明式事务@Transactional知识点分享" 在 Spring 框架中,@Transactional 注解是实现声明式事务的关键。通过 @Transactional 注解,可以指定事务的传播行为、隔离级别、读写控制等属性。 首先,@...
本篇文章将详细探讨Spring中的三种事务管理方式:编程式事务管理、声明式事务管理和基于注解的事务管理。 首先,编程式事务管理是通过编码来控制事务的开始、提交、回滚等操作。Spring提供了...
编程式事务管理需要开发者手动控制事务的开始、提交、回滚等操作,而声明式事务管理则通过配置或注解来定义事务边界,让Spring自动处理事务生命周期。 1. **注解驱动的事务管理** Spring提供了一些关键的注解,如`...
在上面的代码中,我们添加了 @Transactional 注解,该注解指定了事务的传播行为(Propagation.REQUIRED)和 readOnly 属性为 false。这将确保 Hibernate Session 被正确地绑定到当前线程,并执行插入操作。 总结 ...
在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...
在 Spring 框架中,@Transactional 注解是用于管理事务的关键工具之一。但是,在实际开发中,我们经常会遇到 @Transactional 注解失效的问题。本篇文章将详细介绍 @Transactional 注解失效解决方案,通过示例代码和...
在Spring框架中,@Transactional注解是通过AOP代理来实现事务管理的。在默认情况下,只有外部调用目标方法时,Spring才会生成代理对象来管理事务。但是,如果在同一个类中的其他方法调用有@Transactional注解的方法...
声明式事务管理是Spring提供的一种事务管理方式,开发者无需在业务代码中显式调用事务开始、提交、回滚等操作,只需在配置文件或注解中声明事务属性即可。这种方式降低了代码的耦合度,提高了可维护性。 三、配置...
Spring框架在事务管理方面提供了两种主要的实现方式:编程式事务管理和声明式事务管理。本篇文章将重点关注声明式事务管理中的注解驱动方式,也就是基于`@Transactional`注解的事务实现。这种方式使得代码更加简洁,...
`@Transactional`注解允许指定这些属性,如`propagation`(传播行为)、`isolation`(隔离级别)、`readOnly`(只读事务)等。 总的来说,Spring的`@Transactional`注解为开发者提供了方便且强大的声明式事务管理...
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 30, readOnly = false) public void myMethod() { // 业务逻辑 } } ``` 在这里,`myMethod`方法会被Spring...
3. 代理机制:这是Spring事务管理的核心,它决定了何时以及如何应用事务策略。代理可以是AOP(面向切面编程)代理,例如通过`TransactionProxyFactoryBean`或基于注解的事务管理。 以下是Spring中声明式事务配置的...
"spring注解式事务" Spring框架提供了基于注解的方式来管理事务,使用@Transactional注解来标记需要事务管理的方法。该注解可以被应用于public方法上,对于非public方法,如果标记了@Transactional也不会报错,但...
在Java编程中,`@Transactional`注解是Spring框架提供的一种事务管理机制,它使得开发者能够在方法级别方便地声明事务边界。然而,在某些特定情况下,`@Transactional`可能会失效,导致事务无法正常工作。以下是一些...
除了`TransactionProxyFactoryBean`,Spring还提供了基于注解的声明式事务管理,通过在方法上添加`@Transactional`注解,可以指定事务属性,如传播行为、隔离级别、是否读写等。这种方式更加简洁,但需要代码和配置...
Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。本篇文章将重点探讨基于注解和XML配置的声明式事务管理。 ### 声明式事务管理 声明式事务管理是Spring中非常受欢迎的特性,因为它允许...
Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...
本篇文章将深入探讨Spring中的事务控制,包括事务的基本概念、事务的特性、Spring事务管理的模式以及如何在实际应用中配置和使用事务。 首先,事务是数据库操作的基本单位,确保数据的一致性和完整性。ACID(原子性...