java 动态代理关系图解

此博客主要围绕Java动态代理关系展开,以图解形式呈现相关内容,有助于理解Java动态代理的原理和关系,属于后端开发中Java技术领域的知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  关于动态代理的理解, 就是本来一个对象执行一个方法 在不能修改这段代码的前提下(比方说源码等等)
  ,对这段代码执行的功能进行加强  ,然后就产生了动态代理的思想。
  生成一个动态代理类 当你想使用这个增强后的方法时 ,执行的是原对象的方法加上你在原对象引用的方法上,
  上下加上的增强代码。动态代理也体现了aop思想,只要增强一次代码,凡是由动态代理生成最后执行到此方法
  都会类似于被拦截被增强。

这里写图片描述

package com.imooc;

public class Car implements CarInterface{
	//这里是  被代理类  实现CarInterface接口 重写run方法
	@Override
	public void run() {
		System.out.println("小汽车在跑。。。。");
	}

}
-----------------------------------------------------------
package com.imooc;

public interface CarInterface {
	//被代理类实现的接口   一个run方法
	public void run();
}
-----------------------------------------------------------
package com.imooc;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class CarDynamicProxy implements InvocationHandler {
	//动态代理类  将被代理类接口注入成属性
	private Object car;
	
	public CarDynamicProxy (Object car){
		this.car = car;
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		//包裹被代理类执行的方法外面 可以书写自己的方法
		System.out.println("小汽车启动");
		method.invoke(car,args);
		System.out.println("小汽车停车");
		return null;
	}
	public Object getCar() {
		return car;
	}
	public void setCar(Object car) {
		this.car = car;
	}
	
}
-----------------------------------------------------------
package com.imooc;

import java.lang.reflect.Proxy;

public class Client {
    //测试类
	public static void main(String[] args) {
		CarInterface car = new Car();
		CarDynamicProxy carproxy = new CarDynamicProxy(car);
		CarInterface proxy = (CarInterface) Proxy.newProxyInstance(car.getClass().getClassLoader(),
				car.getClass().getInterfaces(), carproxy);
	    proxy.run();
	}
}
-----------------------------------------------------------
//console控制台打印结果
小汽车启动
小汽车在跑。。。。
小汽车停车

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值