跳到主要内容

吃透Spring源码(十四):动态代理JDK实现方式源码分析

JDK动态代理

所谓动态代理是指:在程序运行期间根据需要动态创建代理类及其实例来完成具体的功能,动态代理主要分为JDK动态代理和cglib动态代理两大类,本文主要对JDK动态代理进行探讨。

使用步骤

1、 新建接口;
2、 新建一个接口实现类;
3、 实现代理类回调接口InvocationHandler;
4、 通过Proxy.newProxyInstance()方法创建代理类;

使用案例

1,新建HelloWord接口
public interface HelloWord {


void sayHello();
void sayGoodBye();
}
2,HelloWord接口实现类HelloWordImpl
public class HelloWordImpl implements HelloWord {


@Override
public void sayHello() {


System.out.println("Hello");
}

@Override
public void sayGoodBye() {


System.out.println("GoodBye");
}
}
3,InvokeHandler接口实现类
	public static class HelloWordInvokeHandler implements InvocationHandler {



private Object target;

public HelloWordInvokeHandler(HelloWord helloWord) {


this.target = helloWord;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {


System.out.println("执行前");
Object invoke = method.invoke(target, args);
System.out.println("执行后");
return invoke;
}
}