ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring 事务 搭建转账环境以及事务管理手动编写事务管理

2019-02-23 13:50:37  阅读:359  来源: 互联网

标签:转账 事务管理 money accountDao Spring void org import public


  1. 创建业务层Dao接口和实现
    package tx;
    
    public interface AccountDao {
    
        public void outMoney(String from,Double money);
        public void inMoney(String to,Double money);
    
    }
    
    package tx;
    
    public interface AccountService {
        public void  transfer(
                String from,String to,Double money
        );
    }
    
    package tx;
    
    import org.springframework.transaction.TransactionStatus;
    import org.springframework.transaction.support.TransactionCallbackWithoutResult;
    import org.springframework.transaction.support.TransactionTemplate;
    
    public class AccountServiceImplement implements AccountService{
        private AccountDao accountDao;
    
        public void setAccountDao(AccountDao accountDao) {
            this.accountDao = accountDao;
        }
    
        private TransactionTemplate transactionTemplate;
    
        public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
            this.transactionTemplate = transactionTemplate;
        }
    
        @Override
        public void transfer( final String from,final String to,final Double money) {
    
            transactionTemplate.execute(new TransactionCallbackWithoutResult() {
                @Override
                protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
    
                    accountDao.outMoney(from,money);
                    int d =1/0;
                    accountDao.inMoney(to,money);
                }
            });
    
    
    
        }
    }
    

    配置业务层:

    <bean id="accountService" class="tx.AccountServiceImplement">
            <property name="accountDao" ref="accountDao"/>
            <!--注入事务管理模板-->
    
            <property name="transactionTemplate" ref="transactionTemplate"/>
        </bean>
        <!--Dao-->
        <bean id="accountDao" class="tx.AccountDaoImplement">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
        <!--配置c3p0连接池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${driverClass}"/>
            <property name="jdbcUrl" value="${jdbcUrl}"/>
            <property name="user" value="${user}"/>
            <property name="password" value="${password}"/>
        </bean>
    
        <!--<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <constructor-arg>
                <ref bean="dataSource" />
            </constructor-arg>
        </bean>-->
        <!--配置平台事务管理=======-->
        <bean id="transactionMsnger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    <!--配置事务管理的模板-->
        <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
            <constructor-arg>
                <ref bean="transactionMsnger"/>
            </constructor-arg>
        </bean>
    

    测试类:

    package tx;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:tx.xml")
    public class SpringTest1 {
        @Resource(name = "accountService")
        private AccountService accountService;
        @Test
        public void test1(){
            accountService.transfer("王4一","王3一",1000d);
        }
    }
    

     

标签:转账,事务管理,money,accountDao,Spring,void,org,import,public
来源: https://blog.csdn.net/dagedeshu/article/details/87891375

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有