博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring事务管理4-----声明式事务管理(2)
阅读量:6072 次
发布时间:2019-06-20

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

声明式事务管理  基于AspectJ的 XML 方式配置

  通过对事务管理器TransactionManager配置通知(增强),然后再配置切点和切面,详细见applicationContext.xml配置文件

这种事务管理对业务层没有代码修改,在xml配置文件中也简化了设置,在真正开发中经常使用。

dao层

/** * @author AT * 转账dao层 */public interface AccountDao {    /**     * 转出钱     * @param outer     * @param money     */    public void remove(String outer,Double money);    /**     * 转入钱     * @param input     * @param money     */    public void add(String input,Double money);}

dao层实现类

/** * 转账dao层实现 */public class AccountDaoimpl extends JdbcDaoSupport implements AccountDao{    /**     * 转出钱     * @param outer     * @param money     */    @Override    public void remove(String outer, Double money) {        String sql = "update account set money = money - ? where name = ?";        this.getJdbcTemplate().update(sql, money,outer);    }    /**     * 转入钱     * @param input     * @param money     */    @Override    public void add(String input, Double money) {        String sql = "update account set money = money + ? where name = ?";        this.getJdbcTemplate().update(sql, money,input);    }    }

service业务层

/** * @author AT * 转账业务接口 */public interface AccountSevice {    public void transfer(String input,String out,Double money);//消费}

service业务层实现类

/** * @author AT *  编程式事务管理 */public class AccountServiceImpl implements AccountSevice {        @Resource(name="accountDao")    private AccountDao accountDao;    @Override    public void transfer(final String input, final String out,final  Double money) {        accountDao.remove(out, money);//        int a = 1/0;        accountDao.add(input, money);    }     public void setAccountDao(AccountDao accountDao) {        this.accountDao = accountDao;    }}

applicationContext.xml配置文件

测试

/** * @author AT * 测试转账信息     声明式事务管理  基于AspectJ的 XML 方式配置 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext02.xml")public class AccountTest {    @Resource(name="accountService")    private AccountSevice accountService;        @Test    public void test01(){        accountService.transfer("A", "B", 300d);    }    public void setAccountService(AccountSevice accountService) {        this.accountService = accountService;    }}

 

转载于:https://www.cnblogs.com/kuoAT/p/7804281.html

你可能感兴趣的文章
openssl续
查看>>
Centos5 下安装配置APC
查看>>
【Composer】实战操作一:使用库
查看>>
centos6.5 x86_64下yum安装nginx和php
查看>>
Mysql 产品分类和版本说明
查看>>
Linux sed高级用法
查看>>
log4j 配置文件 常规使用 以及 按照不同级别打印到不同的文件
查看>>
汇编语言 第二章 寄存器检测点2.2 第二题
查看>>
rmi经典实例---远程调用简单实现方式
查看>>
Hibernate get和load区别
查看>>
Node.js基础
查看>>
FFMPEG Tips (4) 如何中断阻塞的网络线程
查看>>
js 数组去除重复对象
查看>>
移动互联网之云计算客户端
查看>>
项目实战_Python.利用Pygame编写微信打飞机小游戏完整系列?
查看>>
NAT几种方式实现
查看>>
html基本标签
查看>>
error code [17027]; 流已被关闭;
查看>>
Error:java: Compilation failed: internal java comp
查看>>
关于IE9导入证书,提示成功,但不生效。
查看>>