jdk动态代理是java.lang.reflect.*包提供的方式,必须接住接口才能产生代理对象,所以需要先创建一个接口:
public interface HelloWorld{
public void sayHelloWorld();
}
再提供HelloWorldImpl来实现这个接口:
public class HelloWorldImpl implements HelloWorld {
@Override
public void sayHelloWorld() {
System.out.println(\"Hello World!\");
}
}
以上就是最简单的接口和实现类的关系,现在可以开始代理了。要实现代理需要分两个步骤:
- 建立代理对象和真实服务对象的关系
- 实现代理逻辑
在JDK的动态代理中,要实现代理逻辑类必须实现java.lang.reflect.InvocationHandler接口,这个接口中定义了一个invoke()方法,并提供了接口数组来挂载代理对象:
public class JdkProxyExample implements InvocationHandler{
private target = null;
public bind( target) {
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
@Override
public invoke( proxy, Method method, [] args) throws Throwable {
System.out.println(\"进入代理方法\");
System.out.println(\"调用真实方法之前。。。\");
= method.invoke(target, args);
System.out.println(\"调用真实方法之后。。。\");
return ;
}
public void testJdkProxy() {
JdkProxyExample jdkProxyExample = new JdkProxyExample();
HelloWorld proxy = (HelloWorld) jdkProxyExample.bind(new HelloWorldImpl());
proxy.sayHelloWorld();
}
public static void main(String[] args) {
JdkProxyExample example = new JdkProxyExample();
example.testJdkProxy();
}
}
接下来测试一下代理逻辑的调用:
public void testJdkProxy() {
JdkProxyExample jdkProxyExample = new JdkProxyExample();
HelloWorld proxy = (HelloWorld) jdkProxyExample.bind(new HelloWorldImpl());
proxy.sayHelloWorld();
}
此时,在调用打印Hello World前后都可以加入其他逻辑,即实现了JDK的动态代理。
继续阅读与本文标签相同的文章
下一篇 :
珍重
-
在线PDF加密,你的隐私你做主!
2026-05-18栏目: 教程
-
浅谈物联网用户体验目标的变化
2026-05-18栏目: 教程
-
Linux基础命令---host域名查询工具
2026-05-18栏目: 教程
-
Apache Flink Meetup 北京站,可能有你最想听的技术干货!
2026-05-18栏目: 教程
-
你真的了解RPA吗?
2026-05-18栏目: 教程
