`

Spring学习 -TransactionProxyFactoryBean事务

阅读更多
applicationContext.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/asl_daily_report" />
		<property name="user" value="root" />
		<property name="password" value="" />
		<property name="maxPoolSize" value="40"/>
		<property name="minPoolSize" value="1"/>
		<property name="initialPoolSize" value="1"/>
		<property name="maxIdleTime" value="20"/>
	</bean>
	<bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<bean id="newsDao" class="org.crazyit.app.dao.impl.NewsDaoImpl">
		<property name="ds" ref="dataSource"/>
	</bean>
	<bean id="newsDaoTrans" class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager"/> 
		<property name="target" ref="newsDao"/>
		<property name="transactionAttributes"> 
			<props> 
				<prop key="*">PROPAGATION_REQUIRED,-DataAccessException</prop> 
			</props>
		</property>
	</bean> 



NewsDao.java
package org.crazyit.app.dao;
import org.springframework.dao.DataAccessException;
public interface NewsDao {
	public void insert(String title, String content) throws DataAccessException;
}



NewsDaoImpl.java
package org.crazyit.app.dao.impl;
import javax.sql.DataSource;
import org.crazyit.app.dao.NewsDao;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class NewsDaoImpl implements NewsDao {
	private DataSource ds;
	public void setDs(DataSource ds) {
		this.ds = ds;
	}
	public void insert(String title, String content) throws DataAccessException {
		JdbcTemplate jt = new JdbcTemplate(ds);
		jt.update("insert into news_inf  values(null , ? , ?)", title, content);
		jt.update("insert into news_inf  values(null , ? , ?)", title, content);
	}
}



测试代码:
ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml");
		NewsDao dao = (NewsDao) ctx.getBean("newsDaoTrans", NewsDao.class);
		try {
			dao.insert("Java", "Spring2 Of J2EE");
		} catch (Exception e) {
			System.out.println(e.getClass().getSimpleName());
		}


输入出:DuplicateKeyException
同时事务没有提交,而是回滚。

分享到:
评论

相关推荐

    Spring使用TransactionProxyFactoryBean声明式事务配置实例

    Spring使用TransactionProxyFactoryBean声明式事务配置实例

    spring 事务管理例子(TransactionProxyFactoryBean代理机制 和 tx/aop)

    适用企业系统的sturts1.2+spring2.0+jdbc 的架构。 通过TransactionProxyFactoryBean 代理机制和tx/aop两种方式来管理事务的详细demo

    Spring事务原理、Spring事务配置的五种方式

    Spring事务原理和配置 Spring事务原理是指Spring框架中的一种机制,用于管理事务,并提供了多种配置方式。事务是指一系列的操作,作为一个整体执行,如果其中某个操作失败,整个事务将回滚。Spring事务原理围绕着两...

    spring基于AOP实现事务

    演示了spring基于AOP代理TransactionProxyFactoryBean实现事务

    Spring源代码解析(六):Spring声明式事务处理.doc

    在 Spring 中,声明式事务处理可以通过配置 TransactionProxyFactoryBean 来实现。TransactionProxyFactoryBean 是一个 FactoryBean,它可以创建一个代理对象,该代理对象可以拦截业务方法的调用,并对事务进行管理...

    Spring实战之使用TransactionProxyFactoryBean实现声明式事务操作示例

    主要介绍了Spring实战之使用TransactionProxyFactoryBean实现声明式事务操作,结合实例形式分析了spring使用TransactionProxyFactoryBean实现声明式事务相关配置、接口设置与使用技巧,需要的朋友可以参考下

    Spring+Hibernate事务管理

    Spring将事务管理分成了两类: * 编程式事务管理 * 手动编写代码进行事务管理.(很少使用) * 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个...

    Spring配置事务在DAO层和业务逻辑层

    Spring通过AOP实现声明式事务管理。通常通过TransactionProxyFactoryBean设置Spring事务代理。

    Spring事务配置的五种方式.doc

    Spring事务配置的五种方式 Spring框架中事务配置是非常重要的一部分,通常由三个组成部分组成,即DataSource、TransactionManager和代理机制。无论采取何种配置方式,代理机制部分总是变化的,而DataSource和...

    spring in action英文版

     4.1 学习Spring的DAO理念  4.1.1 理解Spring的DataAccessException  4.1.2 与DataSource一起工作  4.1.3 一致的DAO支持  4.2 在Spring中使用JDBC  4.2.1 JDBC代码的问题  4.2.2 使用...

    Spring事务配置

    Spring烦人配置文件中的事务配置.包括编程方法和声明式事务的三种方法(注解,acpectJ,transactionProxyFactoryBean)

    Spring.3.x企业应用开发实战(完整版).part2

    10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC...

    Spring3.x企业应用开发实战(完整版) part1

    10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC...

    spring-transaction

    Spring将事务管理分成了两类 编程式事务管理 手动编写代码进行事务管理.(很少使用) 声明式事务管理 基于TransactionProxyFactoryBean的方式.(很少使用) 需要为每个进行事务管理的类,配置一个...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0  本文...

Global site tag (gtag.js) - Google Analytics