首页 > 代码库 > 转TransactionProxyFactoryBean代理事务
转TransactionProxyFactoryBean代理事务
<?xml version="1.0" encoding="GBK"?><!-- 指定Spring配置文件的DTD信息 --><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><!-- Spring配置文件的根元素 --><beans> <!-- 定义数据源Bean,使用C3P0数据源实现 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!-- 指定连接数据库的驱动 --> <property name="driverClass" value="http://www.mamicode.com/com.mysql.jdbc.Driver"/> <!-- 指定连接数据库的URL --> <property name="jdbcUrl" value="http://www.mamicode.com/jdbc:mysql://localhost/javaee"/> <!-- 指定连接数据库的用户名 --> <property name="user" value="http://www.mamicode.com/root"/> <!-- 指定连接数据库的密码 --> <property name="password" value="http://www.mamicode.com/32147"/> <!-- 指定连接数据库连接池的最大连接数 --> <property name="maxPoolSize" value="http://www.mamicode.com/40"/> <!-- 指定连接数据库连接池的最小连接数 --> <property name="minPoolSize" value="http://www.mamicode.com/1"/> <!-- 指定连接数据库连接池的初始化连接数 --> <property name="initialPoolSize" value="http://www.mamicode.com/1"/> <!-- 指定连接数据库连接池的连接的最大空闲时间 --> <property name="maxIdleTime" value="http://www.mamicode.com/20"/> </bean> <!-- 配置JDBC数据源的局部事务管理器,使用DataSourceTransactionManager 类 --> <!-- 该类实现PlatformTransactionManager接口,是针对采用数据源连接的特定实现--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 配置DataSourceTransactionManager时需要依注入DataSource的引用 --> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置一个业务逻辑Bean --> <bean id="test" class="lee.TestImpl"> <property name="ds" ref="dataSource"/> </bean> <!-- 为业务逻辑Bean配置事务代理 --> <bean id="testTrans" class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <!-- 为事务代理工厂Bean注入事务管理器 --> <property name="transactionManager" ref="transactionManager"/> <property name="target" ref="test"/> <!-- 指定事务属性 --> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
public interface Test{ public void insert(String u);}
public class TestImpl implements Test{ private DataSource ds; public void setDs(DataSource ds) { this.ds = ds; } public void insert(String u) { JdbcTemplate jt = new JdbcTemplate(ds); jt.execute("insert into mytable values(‘" + u + "‘)"); //两次插入相同的数据,将违反主键约束 jt.execute("insert into mytable values(‘" + u + "‘)"); //如果增加事务控制,我们发现第一条记录也插不进去。 //如果没有事务控制,则第一条记录可以被插入 }}
public class MainTest{ public static void main(String[] args) { //创建Spring容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); //获取事务代理Bean Test t = (Test)ctx.getBean("testTrans"); //执行插入操作 t.insert("bbb"); }}
转TransactionProxyFactoryBean代理事务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。