动态代理
来源:互联网 发布:shell编程视频教程 编辑:程序博客网 时间:2024/06/05 03:38
动态代理:
1.得到代理对象
第一个参数:类加载器器
ClassLoader loader = Demo.class.getClassLoader();
第二个参数:被增强类的接口数组: Person,SuperPerson是Man的接口:man.getInterfaces()
Class[] cs = {Person.class,SuperPerson.class};
第三个参数:InvocationHandler接口,
1.可以使用匿名内部类的得到处理类对象
InvocationHandler hd = new InvcationHandler(){
public Object invoke(Object proxy,Method mthod,Object[] args){
}
};
2.可以同过实现处理接口的方式,得到处理类对象
public MyHandler implements InvocationHandler{
public Object invoke(Object proxy,Method mthod,Object[] args){
method.invoke(被增强类的对象,方法参数);
}
}
Objec objProxy = Proxy.newProxyInstance(loader,interfaces,invocationHandler);
2.明确处理类中invoke方法的三个参数分别表示什么:
第一个参数:Object proxy 表示代理对象
第二个参数: Method method 表示被增强类的方法对象
第三个参数:Object[] args 表示被增强类中的方法里面的参数
3.动态代理具体是怎么执行的:
Object proxy =----;//代理对象
Person p = (Person)proxy;// 代理对象
p.eat();
调用代理对象的方法,
1.第一步:步骤,去执行处理类中的invoke方法
2.第二步:步骤,在处理类中,调用了method.invoke方法,其实执行的被增强类中的方法。
动态代理的执行过程:
调用代理类对象的方法------>
--->执行处理类中的invoke方法,在invoke方法里面,执行method对象方法
---->被增强类中的方法
1.得到代理对象
第一个参数:类加载器器
ClassLoader loader = Demo.class.getClassLoader();
第二个参数:被增强类的接口数组: Person,SuperPerson是Man的接口:man.getInterfaces()
Class[] cs = {Person.class,SuperPerson.class};
第三个参数:InvocationHandler接口,
1.可以使用匿名内部类的得到处理类对象
InvocationHandler hd = new InvcationHandler(){
public Object invoke(Object proxy,Method mthod,Object[] args){
}
};
2.可以同过实现处理接口的方式,得到处理类对象
public MyHandler implements InvocationHandler{
public Object invoke(Object proxy,Method mthod,Object[] args){
method.invoke(被增强类的对象,方法参数);
}
}
Objec objProxy = Proxy.newProxyInstance(loader,interfaces,invocationHandler);
2.明确处理类中invoke方法的三个参数分别表示什么:
第一个参数:Object proxy 表示代理对象
第二个参数: Method method 表示被增强类的方法对象
第三个参数:Object[] args 表示被增强类中的方法里面的参数
3.动态代理具体是怎么执行的:
Object proxy =----;//代理对象
Person p = (Person)proxy;// 代理对象
p.eat();
调用代理对象的方法,
1.第一步:步骤,去执行处理类中的invoke方法
2.第二步:步骤,在处理类中,调用了method.invoke方法,其实执行的被增强类中的方法。
动态代理的执行过程:
调用代理类对象的方法------>
--->执行处理类中的invoke方法,在invoke方法里面,执行method对象方法
---->被增强类中的方法
阅读全文
0 0
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- italk study log
- C语言中取地址符&做函数形参?—— 引用的讨论
- 复习二:dfs
- 130. Surrounded Regions
- 基于Python实现GIT上传敏感信息预扫描工具
- 动态代理
- 在java虚拟机中对象的创建过程
- MyEclipse:Java was started but returned exit code=-1
- Java—反射机制
- Python之matplotlib基础
- 字符串处理技术之格式化字符串(把数字格式化为货币字符串)
- usaco 2.4.4 Bessie Come Home
- 【javascript】CSS文件中属性,改写为JQuery写法
- Ubuntu安装BWA和samtools