最近在开发一项目时使用了spring注解式事务管理,现介绍如下:
一.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-autowire="byName" 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 {
/**
* 描述 :使用方法上声明的事务管理策略,这里的意思为需要在一个事务中运行. <br>
*<p>
*/
@Transactional(propagation=Propagation.REQUIRED,readOnly=false)
public void method1(){
……………………
……………………
}
/**
* 描述 : 使用默认策略. <br>
*<p>
*/
public void method2(){
……………………
……………………
}
}
记得要将这个bean加入到spring上下文中。
一般来说,上述两种事务策略就可以满足要求了,不过需要注意,注解功能的使用需要在项目中加入cglib-nodep-x.x_x.jar
分享到:
相关推荐
spring3hibernate4注解式事务管理
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
javaEE 实验三 Spring JDBC与事务管理, 一、实验目的 1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握...
spring注解的方式开启事务。开启事务,事务挂起,等等。
Spring事务管理教程,详细讲解了Spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等
spring boot 纯注解方法事务控制回滚,注解+简单配置文件使用多线程demo
Spring框架的声明式事务管理是Java开发中的核心特性,它为高效且可靠的数据操作提供了强大支持。Spring通过@Transactional注解以及底层的AOP和代理机制实现了声明式事务。这个机制允许开发者通过简单的注解就能控制...
使用@Transactional注解时,可以通过参数配置事务详情: 5.2.2 基于Annotation方式的声明式事务 * * * * * * * * 声明式事务管理 如何实现Spring的声明式事务管理? 5.2 声明式事务管理 Spring的声明式事务管理可以...
spring使用注解进行事物管理例子,里面有说明.
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo
Spring将事务管理分成了两类: * 编程式事务管理 * 手动编写代码进行事务管理.(很少使用) * 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个...
SpringJDBC注解事务.zip,SpringJDBC注解事务.zip
NULL 博文链接:https://tonl.iteye.com/blog/2093289
spring 事务基于注解模式
Spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上写的不清楚,要不版本都很旧了,所以就是不回滚,Spring 的配置太灵活了,在加上新手,根本就不可能明白Spring...
注解实现声明式事务管理
在Spring3中配置声明式事务比早期版本显得更加简便。只需要几行配置文件+注解就可以实现面向切面的AOP事务
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理; 描述了声明式事务管理,XML,注解;事务配置详解。。。
Spring中基于注解的声明式事务管理和基于XML文件的声明式事务管理测试程序
Spring 整合mybatis(注解&xml版声明式事务).pdf