当前位置:首页 > CN2资讯 > 正文内容

Java之动态代理java 动态代理

3天前CN2资讯
动态代理

可以简单理解成代理商经营模式。代理对象对真实的对象进行动态代理,我们的需求本来是需要访问真实的对象才可以完成,如果存在代理对象,那么我们也可以将需求发给代理对象,代理对象去调用真正的对象也可完成我们的需求。

动态代理的几个概念

1、真实对象:被代理的对象

2、代理对象

3、代理模式:代理对象代理真实对象,达到一种增强真实对象功能的目的

静态代理:有一个java类文件来描述代理模式

动态代理:在内存中形成代理类

实现动态代理的流程

1、代理对象和真实对象实现相同接口

2、Proxy.newinstance获取代理对象

3、使用代理对象调用方法(因为实现了相同的接口,所以会实现相同的方法)

Proxy.newProxyInstance()

Proxy.newProxyInstance()会返回一个代理对象

Proxy.newProxyInstance()会返回一个代理对象
该方法有三个参数
1、类加载器:真实对象.getClass().getClassLoader()
2、实现的接口:真实对象.getClass().getInterfaces()
3、处理器:new InvocationHandler()

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

invoke方法

处理代理逻辑的方法:代理对象调用的所有方法的执行都会触发该方法执行

​ 参数:
​ 1、proxy 代理对象
​ 2、method:代理对象调用的方法,会被封装成Method类的method对象传入invoke方法中
​ 3、args:代理对象调用方法时,传递到该方法内的实际参数

例子:

接口

public interface SaleComputer { public String Sale(double money); public void show(); }

真实对象类

public class Lenovo implements SaleComputer{ @Override public String Sale(double money) { System.out.println("花了" + money + "元买了一台Lenovo电脑"); return "Lenovo Computer"; } @Override public void show() { System.out.println("展示电脑..."); } }

动态代理实现类

public class ProxyTest { public static void main(String[] args) { //动态代理真实对象 /* Proxy.newProxyInstance()会返回一个代理对象 该方法有三个参数 1、类加载器:真实对象.getClass().getClassLoader() 2、实现的接口:真实对象.getClass().getInterfaces() 3、处理器:new InvocationHandler() */ SaleComputer proxy = (SaleComputer) Proxy.newProxyInstance(lenovo.getClass().getClassLoader(), lenovo.getClass().getInterfaces(), new InvocationHandler() { //代理逻辑的方法:代理对象调用的所有方法的执行都会触发该方法执行 /* 参数: 1、proxy 代理对象 2、method:代理对象调用的方法,会被封装成Method类的method对象传入invoke方法中 3、args:代理对象调用方法时,传递到该方法内的实际参数 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理方法执行了"); System.out.println(method); System.out.println(args[0]); return null; } }); //调用方法 String computer = proxy.Sale(8000); System.out.println(computer); } }

总结

动态代理其实就是一种设计模式,为了达到增强对象功能的目的。

在安全中,比如cc链也会经常用到动态代理的特性,即代理对象调用的所有方法的执行都会触发处理器Invoke方法的执行

所有内容仅限于维护网络安全学习参考
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25200.html

    分享给朋友:

    “Java之动态代理java 动态代理” 的相关文章

    不限制流量套餐:选择适合你的最佳电信方案

    在我们这个信息高速发展的时代,手机成为了我们日常生活中不可或缺的一部分。而随着视频、游戏和社交媒体等应用的流行,很多用户的流量需求逐渐增加。这也促使电信运营商们纷纷推出了“不限流量套餐”,以满足用户对流量的广泛需求。 简单来说,不限流量套餐意指用户可以在一个月内不限流量使用手机数据,虽然很多套餐背后...

    AS7473在网络数据传输中的重要性与应用探究

    AS7473简介 AS7473是一个重要的ASN编号,主要与网络数据传输和路由相关。它在信息技术领域中扮演着至关重要的角色,连接着不同的网络节点,确保数据能够顺利传输。想象一下,在这个数字化时代,数据的传输速度和准确性直接影响着我们的工作效率与信息交流。因此,AS7473的定义与重要性绝不容小觑。...

    cping工具:高效的网络检测助手

    在网络管理的世界里,cping工具无疑是一个非常实用的助手。作为一款高效且用户友好的网络检测工具,它专注于对C类IP地址进行ICMP测试。这不仅使得网络管理员能够快速了解网络环境的状态,还能有效帮助他们解决潜在的问题。 我总是喜欢用cping工具来进行网络监测。它的界面整洁,让我一目了然。重要的是,...

    云桌面是什么?解锁现代工作与学习的新方式

    云桌面是一个令人兴奋的概念,尤其是在如今这个数字化迅速发展的时代。我个人认为,云桌面不仅仅是一项技术,更是一种全新的工作方式。简单来说,云桌面是一种基于云计算的桌面虚拟化解决方案。它允许用户通过互联网随时随地访问一个在云端运行的桌面环境。想象一下,不论你在咖啡馆、家中还是办公室,只需一台设备和网络连...

    AS4134是什么线路:深入解析中国电信的核心骨干网

    AS4134线路,大家也可以叫它163网络,这是中国电信的核心骨干网之一。聊到AS4134,首先让人想到的就是它在国内出海带宽上占据的重要地位。能够承载90%的电信业务负载,真的是一个不可小觑的网络。这条线路不仅是中国电信的主要骨干网,还成为了很多海外用户访问国内互联网资源的高性价比选择。我在租用香...

    便宜VPS的选择与使用指南,帮你找到高性价比服务器

    便宜VPS的定义与概述 在讨论便宜VPS之前,我们先了解一下什么是VPS。VPS的全称是“虚拟专用服务器”,它实际上是一种将物理服务器划分成多个虚拟服务器的技术。每个VPS拥有独立的操作系统和资源,相当于拥有自己的私人服务器。这意味着,你可以自由安装软件、配置设置,像使用独立服务器一样使用VPS,但...