1.完善我们的account案例 2.分析案例中问题 3.回顾之前讲过的一个技术:动态代理 4.动态代理另一种实现方式 5.解决案例中的问题 6.AOP的概念 7.spring中的AOP相关术语 8.spring中基于XML和注解的AOP配置…
回到事物的案例中 我们现在希望用代码比较精简的这个AccountServiceImpl这个类.而不是一堆事物的AccountServiceImpl_OLD这个类 新建BeanFactory类 AccountService需要通过spring注入的方式.所以这里提供了set方法 代理谁就写的类加载器. 复制这里的代码 复制过来,然后进行修改 这里有很多红色报错的地方.那就是tsManager这个对象.这就需要在上面定义. 把AccountServiceImpl_OLD中定义的tsManager和生…
代理一个普通的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 两个类做对比.左边的类更加清晰,更加简洁.但是以我们目前的情况…