【自学java笔记#第四十八天#】Spring day03 动态代理和AOP配置
一、解决事务的不一致性问题
案例:从1账户,转100块到2账户,然后更新两个账户。
public void transfer(String sourceName, String targetName, Float money) { System.out.println("transfer--------"); //2.1根据名称查询转出账户 Account source=accountDao.findAccountName(sourceName); //2.2根据名称查询转入账户 Account target=accountDao.findAccountName(targetName); //2.3转出账户减钱 source.setMoney(source.getMoney()-money); //2.4转入账户加钱 target.setMoney(target.getMoney()+money); //2.5更新转出账户 accountDao.updateAccount(source); //2.6更新转入账户 accountDao.updateAccount(target);
这段代码中,一共和数据库进行了4次交互,也就是说创建了4次连接。
所以每一个连接都有自己的独立事务,最后数据库里的数据有可能不是我们预期的。
因此面对这样的事务不一致性问题,最好是只用一次连接,且这次连接里也只有一个控制事务的对象。
这里的做法是,利用ThreadLocal对象,将Connection对象与当前线程绑定,且采用动态代理技术:

二、动态代理技术

三、AOP的基础概念

四、基于XML的AOP配置

五、基于注解的AOP配置

浙公网安备 33010602011771号