1. 步骤一:恢复转账的开发环境(具体开发环境实现见:https://www.cnblogs.com/wyhluckdog/p/10137283.html
2. 步骤二:applicationContext的基本配置为:
<?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:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd">
     
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <property name="driverClass" value="com.mysql.jdbc.Driver"/>
         <property name="jdbcUrl" value="jdbc:mysql:///spring-day03"/>
         <property name="user" value="root"/>
         <property name="password" value="root"/>
     </bean>
    
   
</beans>
3. 步骤三:配置事务管理器
<!-- 配置事务管理器 -->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="dataSource"/>
     </bean>
4. 步骤四:开启注解事务
<!-- 开启注解事务 -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
5.完整的applicationContext.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:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd">
     
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <property name="driverClass" value="com.mysql.jdbc.Driver"/>
         <property name="jdbcUrl" value="jdbc:mysql:///spring-day03"/>
         <property name="user" value="root"/>
         <property name="password" value="root"/>
     </bean>
    
        <!-- 配置事务管理器 -->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="dataSource"/>
     </bean>
  <!--      
    开启注解事务 -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
      
    <bean id="accountDao" class="com.huida.demo1.AccountDaoImpl">
        <property name="dataSource" ref="dataSource"/>
    </bean>
     <bean id="accountService" class="com.huida.demo1.AccountServiceImpl">
            <property name="accountDao" ref="accountDao"/>
           <!--  <property name="transactionTemplate" ref="transactionTemplate"/> -->
     </bean>

    
     
</beans>
6.步骤五:在业务层上添加一个注解:@Transactional。
  * 以下是AccountServiceImpl的完整代码为:
package com.huida.demo1;

import javax.annotation.Resource;

import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;

@Transactional
public class AccountServiceImpl implements AccountService{

    @Resource(name="accountDao")
    private AccountDaoImpl accountDao;
    

    public void setAccountDao(AccountDaoImpl accountDao) {
        this.accountDao = accountDao;
    }
    @Override
    public void pay(String out,String in,double money) {

        //扣钱
        accountDao.outMoney(out, money);
        //加钱
        accountDao.inMoney(in, money);
    }

}
7. 步骤六:编写测试类
package com.huida.demo1;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo1 {

    @Resource(name="accountService")
    private AccountService accountService;
    
    @Test
    public void run1(){
        accountService.pay("小明","小红",1000);
    }
}
8.单元测试run1方法,刷新spring-day03数据库中的user表,可以看到小明的money减少了1000,小红的money增加了1000.


posted on 2018-12-18 16:09  wyhluckydog  阅读(496)  评论(0编辑  收藏  举报