博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 事务管理-只记录xml部分
阅读量:4936 次
发布时间:2019-06-11

本文共 5050 字,大约阅读时间需要 16 分钟。

1.手动配置事务的方式是

applicationContext.xml

 

dao层(接口类这里不写)

package com.test.spring.aop.tansation.example.dao;import org.springframework.jdbc.core.support.JdbcDaoSupport;public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {    public void in(String inner, int money) {        this.getJdbcTemplate().update("update account set money = money -? where username = ?", money, inner);    }    public void out(String outter, int money) {        this.getJdbcTemplate().update("update account set money = money +? where username = ?", money, outter);    }}

 

service层

package com.test.spring.aop.tansation.example.service;import org.springframework.transaction.TransactionStatus;import org.springframework.transaction.support.TransactionCallbackWithoutResult;import org.springframework.transaction.support.TransactionTemplate;import com.test.spring.aop.tansation.example.dao.AccountDao;public class AccountServiceImpl implements AccountService {    private AccountDao accountDao;    private TransactionTemplate transactionTemplate;        public void setAccountDao(AccountDao accountDao) {        this.accountDao = accountDao;    }    public void setTransactionTemplate(TransactionTemplate transactionTemplate) {        this.transactionTemplate = transactionTemplate;    }            public void tansfer(final String inner, final String outter, final int money) {                //手动方式配置        transactionTemplate.execute(new TransactionCallbackWithoutResult() {                        @Override            protected void doInTransactionWithoutResult(TransactionStatus status) {                accountDao.out(outter, money);           //遇到异常时,事务回滚                int i = 1/0;                accountDao.in(inner, money);                            }        });            }}

 

测试

package com.test.spring.aop.tansation.example;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.spring.aop.tansation.example.service.AccountService;public class TestExample {    @Test    public void test() {        ApplicationContext ctx = new ClassPathXmlApplicationContext("com/test/spring/aop/tansation/example/applicationContext.xml");            AccountService as = ctx.getBean("accountService",AccountService.class);                as.tansfer("jack", "peter", 200);    }}

 

2.半自动,使用代理的方式

这里只需要修改一下service层和配置就可以了

 

applicationContext.xml

 

service层

package com.test.spring.aop.tansation.example.service;import org.springframework.transaction.TransactionStatus;import org.springframework.transaction.support.TransactionCallbackWithoutResult;import org.springframework.transaction.support.TransactionTemplate;import com.test.spring.aop.tansation.example.dao.AccountDao;public class AccountServiceImpl implements AccountService {    private AccountDao accountDao;    private TransactionTemplate transactionTemplate;        public void setAccountDao(AccountDao accountDao) {        this.accountDao = accountDao;    }    public void setTransactionTemplate(TransactionTemplate transactionTemplate) {        this.transactionTemplate = transactionTemplate;    }            public void tansfer(final String inner, final String outter, final int money) {
accountDao.out(outter, money); int i = 1/0; accountDao.in(inner, money); }}

 

3. 使用spring自动的方式

根据上面的一大串配置,会是很头疼,现在就是用全自动,简化上面繁琐的配置,除了修改配置外,其余的都不需要修改

 

转载于:https://www.cnblogs.com/oscar1987121/p/10960570.html

你可能感兴趣的文章
js中几种实用的跨域方法原理详解
查看>>
打印图形
查看>>
《第一行代码》学习笔记7-活动Activity(5)
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
一位有着工匠精神的博主写的关于IEnumerable接口的详细解析
查看>>
MySQL中特有的函数If函数
查看>>
安装Python3.6.2报错:zipimport.ZipImportError: can't decompress data; zlib not available
查看>>
【蓝桥杯】入门训练 Fibonacci数列
查看>>
实验十 指针2
查看>>
常见HTTP状态码
查看>>
vim 空格和换行的删除和替换
查看>>
ionic 入门学习
查看>>
[python]pickle和cPickle
查看>>
末日了,天是灰色的。
查看>>
Vuejs vm对象详解
查看>>
自定义RatingBar的一个问题(只显示显示一个星星)
查看>>
剑指Offer--二叉树的镜像
查看>>
PAT-BASIC-1031-查验身份证
查看>>
Python笔记5----集合set
查看>>