String学习(十六)-使用Xml文件配置事务
来源:互联网 发布:网络销售应该怎么做 编辑:程序博客网 时间:2024/06/07 09:01
重点是xml文件的配置:
1.applicationcontext-xml.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.spring"></context:component-scan> <!-- 导入资源文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 配置C3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/> <property name="minPoolSize" value="${jdbc.minPoolSize}"/> <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/> </bean> <!-- 配置Spring中JdbcTemplate(Jdbc模板类) --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/></bean><!-- 配置Bean --><bean id="bookShopDao" class="com.spring.tx.xml.BookShopImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean><bean id="bookShopService" class="com.spring.tx.xml.BookShopServiceImpl"> <property name="bookShopDao" ref="bookShopDao"></property></bean><bean id="cashier" class="com.spring.tx.xml.CashierImpl"> <property name="bookShopService" ref="bookShopService"></property></bean><!-- 1.配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property></bean><!-- 2.配置事务属性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 根据方法名之指定事务的属性 --> <tx:method name="purchase" propagation="REQUIRES_NEW"/> <tx:method name="get*" read-only="true"/> <tx:method name="find*" read-only="true"/> <tx:method name="*"/> </tx:attributes></tx:advice><!-- 3.配置事务切入点,以及把事务切入点和事务属性关联起来 --><aop:config> <aop:pointcut expression="execution(* com.spring.tx.xml.BookShopServiceImpl.*(..))" id="txPointCut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/></aop:config> </beans>
2.测试类
package com.spring.tx.xml;import java.util.Arrays;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringTransactionTest { private ApplicationContext ctx=null; private BookShopDao bookShopDao=null; private BookShopService bookShopService=null; private Cashier cashier=null; { ctx=new ClassPathXmlApplicationContext("springXML/applicationContext-xml.xml"); bookShopDao=ctx.getBean(BookShopDao.class); bookShopService=ctx.getBean(BookShopService.class); cashier=ctx.getBean(Cashier.class); } @Test public void testTransactionlPropagation() { cashier.checkout("AA", Arrays.asList("1001","1002")); } @Test public void testBookShopService() { bookShopService.purchase("AA", "1001"); }}
3.实现类
package com.spring.tx.xml;public class BookShopServiceImpl implements BookShopService { public BookShopDao bookShopDao; public void setBookShopDao(BookShopDao bookShopDao) { this.bookShopDao = bookShopDao; } public void purchase(String username, String isbn) { try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //1.获取书的单价 int price=bookShopDao.findBookPriceByIsbn(isbn); //2.更新书的库存 bookShopDao.updateBookStock(isbn); //3.更新用户余额 bookShopDao.updateUserAccount(username, price); }}
package com.spring.tx.xml;import java.util.List;public class CashierImpl implements Cashier { private BookShopService bookShopService; public void setBookShopService(BookShopService bookShopService) { this.bookShopService = bookShopService; } @Override public void checkout(String username, List<String> isbns) { for(String isbn:isbns) { bookShopService.purchase(username, isbn); } }}
阅读全文
0 0
- String学习(十六)-使用Xml文件配置事务
- Java学习笔记(二十六):String.split()的使用
- Spring中使用XML文件的方式配置事务
- XML学习基础(十六)
- C#学习笔记(十六):使用打开保存文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- Spring学习历程---使用注解配置或XML配置声明式事务
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- spring 事务一致性使用xml配置
- 22.spring_使用xml配置事务
- string 事务配置配置
- XML文件配置使用
- Spring、Spring事务详解;使用XML配置事务
- Android学习 (十六) JSON文件简介
- Linux学习(十六):文件IO
- 13.IDA-显示正确的函数名称(去掉c++后缀命名)
- Ubuntu 10.04中修改fcitx输入法的词库
- php微信的文本回复功能开发
- inno setup添加pascal代码检测旧版本程序
- 使用application(servletContext)统计网站访问次数,及重启服务器后如何延续
- String学习(十六)-使用Xml文件配置事务
- 文章标题
- 14.IDA-XREF(交叉引用)概述
- 剑指offer(三)从尾到头打印链表
- Jquery中的bind(),on()绑定事件方式总结
- 【23种设计模式】结构型模式 > 外观模式
- Flutter实战一Flutter聊天应用(十九)
- 几个深度学习库
- 选择排序之简单选择