动态代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态代理相关的知识,希望对你有一定的参考价值。
软件152 刘昊翰
动态代理
1.概念
Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类:
(1)Interface InvocationHandler:该接口中仅定义了一个方法Object:invoke(Object obj,Method method,Object[] args)。在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个抽象方法在代理类中动态实现。WIN
(2)Proxy:该类即为动态代理类,作用类似于上例中的ProxySubject
2.DynamicProxy.java核心代码:
package org.proxy.proxyClass;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//动态代理类
public class DynamicProxy implements InvocationHandler{
private Object obj;
public Object bind(Object obj){
this.obj=obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] objs)
throws Throwable {
Object result=null;
try{
before();
result=method.invoke(obj, objs);
after();
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public void before(){
System.out.println("订机票,订酒店,送老板");
}
public void after(){
System.out.println("订机票,退酒店,接老板");
}
}
3.运行结果如图
以上是关于动态代理的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 结构型模式 -- 代理模式(动态代理(JDK动态代理(JDK动态代理要求必须定义接口,对接口进行代理。)动态代理原理(使用arthas-boot.jar查看代理类的结构)动态代理的作用)(代