黑马程序员——高新技术——动态代理
来源:互联网 发布:mysql h localhost 编辑:程序博客网 时间:2024/06/05 22:50
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
代理(Proxy)
1.要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能。
2.编写一个与目标具有相同接口的代理类,代理类的每个方法调用目标类的相同犯法,并在调用方法时加上系统功能的代码。
3.采用工厂模式和配置文件的方式管理,不需要修改客户端程序,在配置文件中配置是使用目标类,还是代理类,以便切换。
AOP(面向方面的编程)
目标使交叉业务模块化,采用将划面代码移动到原始方法的周围,与直接在方法中编写切面代码的运行效果是一样的。
动态代理技术
1.要为系统各种接口的类增加代理功能,需要太多代理,不能全是静态
2.JVM可在运行期间动态生成类的字节码,这种动态生成的类被用做代理类,即动态代理类
3.JVM生成的动态类必须实现一个或多个接口,所以,JVM生成的动态类只能用作具有相同接口的目标类的代理
4.CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以如果要为一个没有实现接口的类生成动态代理类。那么可以使用CGLIB库
5.代理类的各个方法中通常出了要调用目标的相应方法和对外返回目标返回的的结果外,还可以在代理方法中的如下四个位置上加上系统功能代码:
1.调用方法之前2.之后3.前后4在处理异常的catch中
例子:
让JVM创建动态类及实例对象,需要给它提供哪些信息?
1.生成的类有哪些方法,通过让其实现哪些接口的方式进行告知
2.产生的类字节码必须有一个关联的类加载器对象。
3.生成的类中的方法的代码是怎样的,也得有我们提供。把我们的代码写在一个约定好的接口对象的方法中,把对象传给它调用我的方法即插入我的代码。
构造方法接收一个InvocationHandler对象,是为记住这个对象,然后使用它
调用代理涉及三个要素:对象,方法,参数。
切面的代码以对象的形式封装。
给InvocationHandler传递两个对象才能做成框架:目标对象及系统对象。
实现AOP功能的封装与配置
1.工厂类BeanFactory负责创建目标类或代理类的实例对象,并通过配置文件实现切换,其getBean方法根据参数字符串返回一个相应的实例对象,如果参数字符串在配置文件中队形的类名不是ProxyFactionBean,直接返回该类的实例对象,否则返回该类实例对象的getProxy方法的返回对象。
2.BeanFactory的构造方法接收代表配置文件的输入流对象,配置文件格式为键值对
3.ProxyFactionBean充当封装生成动态代理的工厂,需要工厂提供哪些参数信息:目标,通知
4.编写客户端应用:
编写实现Advice接口的类和在配置文件中进行配置。
调用BeanFactory获取对象
- 黑马程序员—高新技术:动态代理
- 黑马程序员——高新技术(代理、动态代理)
- 黑马程序员——高新技术——动态代理
- 黑马程序员——高新技术(动态代理类)
- 黑马程序员_java高新技术—类加载器&&动态代理
- 黑马程序员—JAVA高新技术之类加载器、动态代理
- 黑马程序员—JAVA高新技术_动态代理
- 黑马程序员——高新技术---代理
- 黑马程序员——高新技术--代理
- 黑马程序员————高新技术————动态代理
- 黑马程序员——高新技术——类加载器,内省,注解,动态代理
- 黑马程序员——高新技术5——类加载器和动态代理
- 黑马程序员——【Java】【高新技术】自定义动态代理,过程、DEMO
- 黑马程序员_Java高新技术——类加载器和动态代理(第9篇)
- 黑马程序员_Java高新技术——类加载器,代理
- 黑马程序员——【Java】【高新技术】代理作用、原理、AOP
- 黑马程序员—动态代理
- 黑马程序员—代理与动态代理
- Android的Window类
- KMP算法中的next算法解析
- 斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感
- 进击的程序员
- opengl入门系列-Bezier曲线
- 黑马程序员——高新技术——动态代理
- Ajax的技术原理
- java实现简单计算器算法--支持浮点数运算
- HTML5 canvas 可拖拽时钟
- 腾讯qq6.3官方版 v12390 体验版
- 漫谈选人与培训
- https 网站时代来临?
- 创建模式之单列模式
- objective-c 中数据类型之三 数组(NSArray) 高级操作