java基础----动态代理!
2012-10-20 15:07
381 查看
代理模式:
1.代理模式角色:
1) 被代理者。
2) 代理者。继承同一个父接口。
2.代理的作用:
1) 为已经存在一的多个具有相同的接口的目标顺的方法增加一些相同的功能。
2) 代理类是使用反射在JVM运行时动态产生的,所以其使用有很好的灵活性,可以在任何业务逻辑之前和之后加入自己想加入的代码。
3.代理的原理:
4.jdk中动态代理实现
java的动态代理要求去实现一个InvocationHandlerv接口。而在它的实现类中只要去实现一个方法。
第一个参数proxy,表示代理类,第二个方法则是表示,被代理类的需要调用的方法。每三个参数被调用的方法中传入的参数。
然后通过Method中的invoke(obj,args)去反射调用方法。
在这个方法之前就可以去增加各种功能。从而实现动态代理功能。
5.动态代理的创建:
1)直接通过Prxoy实例化:
直接通过Proxy的实例化得到代理对象 ,然后调用方法。
2)通过获得代理类的字节码,然后得到构造方法,传入InvocationHandlerv.class获得代理类。实现动态代理。
----------------------
android培训、java培训、期待与您交流! ----------------------
1.代理模式角色:
1) 被代理者。
2) 代理者。继承同一个父接口。
2.代理的作用:
1) 为已经存在一的多个具有相同的接口的目标顺的方法增加一些相同的功能。
2) 代理类是使用反射在JVM运行时动态产生的,所以其使用有很好的灵活性,可以在任何业务逻辑之前和之后加入自己想加入的代码。
3.代理的原理:
4.jdk中动态代理实现
java的动态代理要求去实现一个InvocationHandlerv接口。而在它的实现类中只要去实现一个方法。
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { start(); Object o = method.invoke(obj,args); end(); return o; }
第一个参数proxy,表示代理类,第二个方法则是表示,被代理类的需要调用的方法。每三个参数被调用的方法中传入的参数。
然后通过Method中的invoke(obj,args)去反射调用方法。
在这个方法之前就可以去增加各种功能。从而实现动态代理功能。
5.动态代理的创建:
1)直接通过Prxoy实例化:
Person person = new Person(); MyProxy myProxy = new MyProxy(person); Human personProxy = (Human) Proxy.newProxyInstance( Person.class.getClassLoader(), Person.class.getInterfaces(), myProxy); // 以下代码则会报错。 // Person personProxy = // (Person)Proxy.newProxyInstance(Person.class.getClassLoader(),Person.class.getInterfaces(), // myProxy); personProxy.save();
直接通过Proxy的实例化得到代理对象 ,然后调用方法。
2)通过获得代理类的字节码,然后得到构造方法,传入InvocationHandlerv.class获得代理类。实现动态代理。
Person person = new Person(); MyProxy myProxy = new MyProxy(person); Class<?> clazzProxy = Proxy.getProxyClass(Person.class.getClassLoader(), Person.class.getInterfaces()); Constructor<?> constructor = clazzProxy.getConstructor(InvocationHandler.class); //Constructor<?> constructor = clazzProxy.getConstructor(MyProxy.class); //必须要用InvocationHandler用它的实现类是不可以的! Human personPrxoy = (Human)constructor.newInstance(myProxy); personPrxoy.save();
----------------------
android培训、java培训、期待与您交流! ----------------------
相关文章推荐
- 0025 Java 动态代理(反射的应用)【基础】
- Android插件化开发基础之Java动态代理(proxy)机制的简单例子
- Java基础 - 类的加载,类加载器,反射,动态代理,模板设计模式,JDK5新特性,枚举(类),JDK1.7新特性
- java 框架基础知识(2)----动态代理-->Spring AOP
- JAVA基础知识之JVM-——动态代理(AOP)
- Java基础---Java---基础加强---类加载器、委托机制、AOP、 动态代理技术、让动态生成的类成为目标类的代理、实现Spring可配置的AOP框架
- Java基础加强:细说JDK动态代理的实现原理
- Java基础加强_Eclipse、枚举、反射、注解、泛型、类加载器、动态代理
- 黑马程序员-->Java基础加强-->动态代理
- Java基础---Java---基础加强---类加载器、委托机制、AOP、 动态代理技术、让动态生成的类成为目标类的代理、实现Spring可配置的AOP框架
- 黑马程序员—Java基础加强(动态代理)
- 黑马程序员:Java基础总结----静态代理模式&动态代理
- java基础知识学习之代理深入学习(用动态代理实现AOP,FacotryBean)
- 黑马程序员_Java基础_动态代理
- Java基础进阶_day18_(类加载器,反射,动态代理)
- 【Java基础】——JDK动态代理VSCGLIB动态代理
- JAVA动态代理基础
- Java基础学习总结(109)——Jdk动态代理和cglib动态代理总结
- [Java]Spring AOP基础知识-动态代理
- JAVA基础资料 Java动态代理实现AOP