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