Java 两种动态代理机制的深入理解

本文详细介绍了Java的两种动态代理机制——JDK和CGLIB。JDK代理要求被代理类实现接口,而CGLIB则无需接口,通过创建目标类的子类进行代理。两者都可以在调用目标方法前后添加额外操作,但CGLIB能调用非接口方法,而JDK不能。文中通过代码示例展示了两种代理模式的工作原理和使用场景。
摘要由CSDN通过智能技术生成

Java的两种动态代理机制

代理机制,也就是提供了对目标对象额外的访问方式,它的好处是在不修改目标对象的功能的前提下,除了目标对象可以实现的功能之外,还可以通过代理对象实现一些额外的操作。

与静态代理不同,动态模式下的代理类是在程序运行时,通过反射机制动态生成的,并不是在程序运行前就事先加载好的。

1)jdklib模式的代理

jdk模式的代理三个基本要素是:接口,目标对象,代理对象,

需要满足的条件是:

1.被代理的类(目标类)必须要有接口;
2.代理对象必须是该接口的实现对象;
3.代理对象只能调用接口中的方法,不能调用目标类自己的方法
。下面结合具体代码来解释;

首先需要一个接口,定义两个方法

public interface ISomeInterface {
   
	
	void doOne(String message);
	void doOther(String message);
}

准备一个需要被代理的目标类(是接口的实现类),需要实现接口中的方法,此外还定义了目标类自己的方法,如下:

public class TargetObject implements ISomeInterface{
   

	@Override
	public void doOne(String message) {
   
		System.out.println("这是目标对象实现接口的doOne方法:" + message);
	}

	@Override
	public void doOther(String message) {
   
		System.out.println("这是目标对象实现接口的doOther方法:" + message);
	}
	
	public void myWork(String message) {
   
		System.out.println("这是目标对象自己的方法:" + message);
	}
}

下面就是jdklib代理的重点内容,看代码:

public class JdkProxy 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值