使用xmlioc这个项目进行完善. 创建一个新的工程把之前的代码都复制过来. 复制pom.xml内的依赖项 java下的com包复制过来. 配置文件复制过来 测试类固执过来 内容进行删减 测试类的方法都删掉 新增方法 实现类里面添加未实现的方法 实现这个方法 用List<account>去接收  这里因为返回的是一个List所以用的是BeanListHandler 持久层写完了.完善Service 测试转账方法 数据库只保留这两条记录 数据发生了变化 估计执照转正过程中的错误 执行过程中就报异…
回到事物的案例中 我们现在希望用代码比较精简的这个AccountServiceImpl这个类.而不是一堆事物的AccountServiceImpl_OLD这个类 新建BeanFactory类 AccountService需要通过spring注入的方式.所以这里提供了set方法 代理谁就写的类加载器. 复制这里的代码 复制过来,然后进行修改 这里有很多红色报错的地方.那就是tsManager这个对象.这就需要在上面定义. 把AccountServiceImpl_OLD中定义的tsManager和生…
1.完善我们的account案例 2.分析案例中问题 3.回顾之前讲过的一个技术:动态代理 4.动态代理另一种实现方式 5.解决案例中的问题 6.AOP的概念 7.spring中的AOP相关术语 8.spring中基于XML和注解的AOP配置…
代理一个普通的java类 导入cglib的包 它还有一个asm的依赖.会自动加进来 创建cglib的文件夹.把proxy里面的Client和Producer复制到cglib文件夹 Producer不实现任何的接口 Client内的代码要重新写 不能受罪种类,如果是最终类就不能再创建子类了 参数1是Class 参数2是Callback MethodInterceptor是Callback的子接口 前面三个参数和基于接口的动态代码参数是一样的 producer需要用final来修饰 调用一下这个方法…
创建 Producer 生产者的类 创建标准.这标准就是接口 创建消费者的类 以前的方式,客户直接找生产厂家 代理商出现以后,怎么去联系代理商 动态代理 第一个参数是ClassLoader 第二个参数是interface是字节码类型,第三个是InvocationHandler是一个接口 代理producer就这么写.代理谁就写谁的getClass().getClassLoader() 代理谁,就是谁的getClass().getInterfaces() s时而用谁写,所以这里我们new一个Inv…
新建项目 实现动态代理. 动态代理的概念 买电脑找代理商 代理的出现 解决了生产厂家的一些问题 需要java中的动态代理机制…
转账回滚这里把异常打印出来.AccountServiceTest.java 把数据库的金额现在都改成1000块 运行测试方法 这里已经报错了. 刷新数据库内的数据.这样我们事物就控制成功了. 事物控制由于持久层回到了业务层.通过添加事物,转账可以正常的执行了. 配置变的非常的麻烦 复制一份AccountServiceImpl的代码改名叫做AccountServiceImpl_OLD 修改原来的代码AccountServiceImpl 两个类做对比.左边的类更加清晰,更加简洁.但是以我们目前的情况…
Service中就需要用到 TransactionManager中的方法.提供set方法等着spring注入 这里面所有的操作都可以加上事物控制 其他的方法都是相同的操作 这里没有返回结果 转账的方法 查询的地方需要thorw异常.产生了异常,程序就不在执行 QueryRunner注入了Connection之后. 它就会从连接里面取.我现在不希望它从连接里面取 xml.这里注入connection就不需要了 但是当我们不提供connection对象的时候.我们dao里面的操作将没有connect…
事务管理工具类 首先需要有connection.并且是当前线程上的connection.声明connectionUtils.提供set方法等着spring来注入 有异常需要放在事务里面 close关闭并不是真正的, 而是还回到连接池中.那么现成用完了也是还回到了线程池中 线程还回的时候绑定着一个连接.只不过这个连接关闭了. 线程用完了 需要把线程和连接做一个解绑的操作.当我们把工程改成web工程时就会涉及到这个问题 removeConnection 接下里完善Service.让Service有事…
不是没有事务造成的 这样相当于有四个connection 每一个都有自己独立的事物 每一个自己成功就提交事务. 已经提交的就执行结束.没有提交的就报异常 让这些操作使用同一个connection 事物的控制 提供一个数据源 ,既不能用也不能自己创建.等着spring为我们注入.所以这里提供set的方法来提供注入 这段代码有异常,可以加上try catch.然后第四步,返回当前线程上的连接 这样就实现了当前线程上有这么个连接. 接下来需要把手动提交事务改成自动提交.接下来写事务操作的工具类…