TransactionProxyFactoryBean代理事务-开放式事物管理

本文介绍了一个使用Spring框架进行事务管理的示例配置。通过配置数据源、事务管理器及事务代理,实现了对业务逻辑方法的事务控制。展示了如何在Spring中配置C3P0连接池并设置基本属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载http://fujiejie.iteye.com/blog/471750
 
1.<?xml version="1.0" encoding="GBK"?>   
2.<!-- 指定Spring配置文件的DTD信息 -->   
3.<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"  
4.    "http://www.springframework.org/dtd/spring-beans-2.0.dtd">   
5.<!-- Spring配置文件的根元素 -->   
6.<beans>   
7.    <!-- 定义数据源Bean,使用C3P0数据源实现 -->   
8.    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
9.        destroy-method="close">   
10.        <!-- 指定连接数据库的驱动 -->   
11.        <property name="driverClass" value="com.mysql.jdbc.Driver"/>   
12.        <!-- 指定连接数据库的URL -->   
13.        <property name="jdbcUrl" value="jdbc:mysql://localhost/javaee"/>   
14.        <!-- 指定连接数据库的用户名 -->   
15.        <property name="user" value="root"/>   
16.        <!-- 指定连接数据库的密码 -->   
17.        <property name="password" value="32147"/>   
18.        <!-- 指定连接数据库连接池的最大连接数 -->   
19.        <property name="maxPoolSize" value="40"/>   
20.        <!-- 指定连接数据库连接池的最小连接数 -->   
21.        <property name="minPoolSize" value="1"/>   
22.        <!-- 指定连接数据库连接池的初始化连接数 -->   
23.        <property name="initialPoolSize" value="1"/>   
24.        <!-- 指定连接数据库连接池的连接的最大空闲时间 -->   
25.        <property name="maxIdleTime" value="20"/>   
26.    </bean>   
27.    <!-- 配置JDBC数据源的局部事务管理器,使用DataSourceTransactionManager 类 -->   
28.    <!-- 该类实现PlatformTransactionManager接口,是针对采用数据源连接的特定实现-->   
29.    <bean id="transactionManager"    
30.        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
31.        <!-- 配置DataSourceTransactionManager时需要依注入DataSource的引用 -->   
32.        <property name="dataSource" ref="dataSource"/>   
33.    </bean>   
34.    <!-- 配置一个业务逻辑Bean -->   
35.    <bean id="test" class="lee.TestImpl">   
36.        <property name="ds" ref="dataSource"/>   
37.    </bean>   
38.    <!-- 为业务逻辑Bean配置事务代理 -->   
39.    <bean id="testTrans" class=   
40.        "org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
41.        <!-- 为事务代理工厂Bean注入事务管理器 -->   
42.        <property name="transactionManager" ref="transactionManager"/>    
43.        <property name="target" ref="test"/>   
44.        <!-- 指定事务属性 -->   
45.        <property name="transactionAttributes">    
46.            <props>    
47.                <prop key="*">PROPAGATION_REQUIRED</prop>    
48.            </props>   
49.        </property>   
50.    </bean>    
51.</beans> 


接口

 

1.public interface Test   
2.{   
3.    public void insert(String u);   
4.}  


接口实现:

 

1.public class TestImpl implements Test   
2.{   
3.    private DataSource ds;   
4.    public void setDs(DataSource ds)   
5.    {   
6.        this.ds = ds;   
7.    }   
8.    public void insert(String u)   
9.    {   
10.        JdbcTemplate jt = new JdbcTemplate(ds);   
11.        jt.execute("insert into mytable values('" + u + "')");   
12.        //两次插入相同的数据,将违反主键约束   
13.        jt.execute("insert into mytable values('" + u + "')");   
14.        //如果增加事务控制,我们发现第一条记录也插不进去。   
15.        //如果没有事务控制,则第一条记录可以被插入   
16.    }   
17.}  


测试

1.public class MainTest   
2.{   
3.    public static void main(String[] args)    
4.    {   
5.        //创建Spring容器   
6.        ApplicationContext ctx = new    
7.            ClassPathXmlApplicationContext("bean.xml");   
8.        //获取事务代理Bean   
9.        Test t = (Test)ctx.getBean("testTrans");   
10.        //执行插入操作   
11.        t.insert("bbb");   
12.    }   
13.}  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值