spring—编程式事物管理

来源:互联网 发布:mysql用户密码修改 编辑:程序博客网 时间:2024/06/05 14:47
1.benas.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
     
       <!-- 数据库连接池的配置 -->
     <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
       <propertyname="driverClassName"value="${jdbc.driverClassName}"/>
       <propertyname="url"value="${jdbc.url}"/>
       <propertyname="username"value="${jdbc.username}"/>
       <propertyname="password"value="${jdbc.password}"/>
     </bean>
        <!-- jdbc事务管理器 -->
     <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <propertyname="dataSource"ref="dataSource"></property>
     </bean>
        
     <beanid="transactionTemplate"class="org.springframework.transaction.support.TransactionTemplate">
        <propertyname="transactionManager"ref="transactionManager"></property>
     </bean>
     <context:property-placeholderlocation="jdbc.properties"/>
     <!-- jdbcTemplate的配置 -->
     <beanid="namedParameterJdbcTemplate"class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
          <constructor-argref="dataSource"></constructor-arg>
     </bean>
     <!-- 上面的全可以直接调用不用修改,如果要改数据库配置就改jdbc.properties -->
     <beanid="bankDao"class="com.lidongyang.dao.impl.BankDaoImpl">
          <propertyname="namedParameterJdbcTemplate"ref="namedParameterJdbcTemplate"></property>
     </bean>
     <beanid="bankService"class="com.lidongyang.service.impl.BankServiceImpl">
          <propertyname="bankDao"ref="bankDao"></property>
          <propertyname="transactionTemplate"ref="transactionTemplate"></property>
     </bean>
</beans>

2.package com.lidongyang.service.impl;

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

import com.lidongyang.dao.Bank;
import com.lidongyang.service.BankService;

public class BankServiceImpl implements BankService{
    private Bank bankDao;
    private TransactionTemplate transactionTemplate;
    public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
        this.transactionTemplate = transactionTemplate;
    }
    public void setBankDao(Bank bankDao) {
        this.bankDao = bankDao;
    }

    @Override
    public void TransactionMoney( final int money, final int userIdA, final int userIdB) {
        // TODO Auto-generated method stub
        transactionTemplate.execute(new TransactionCallbackWithoutResult() {

            @Override
            protected void doInTransactionWithoutResult(TransactionStatus arg0) {
                // TODO Auto-generated method stub
                bankDao.outMoney(userIdA,money );
                bankDao.inMoney(userIdB,money );               
            }
        });
    }

}
0 0
原创粉丝点击