TransactionProxyFactoryBean代理事务-开放式事物管理详解编程语言

转载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.}  

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13619.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论