Java动态代理回顾

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南 本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。 阅读详情

代理:代替某人做一些事情

这里引申出几个属于  委托人、被委托人

通俗说就是 我要找刘德华打广告,我不能直接找上他本人,我要先找他的代理人才行。

为什么不能找上他本人呢?

因为代理可以为他过滤掉一些收益不高或者公司实力不雄厚的广告业务,也就是说代理存在的意义是在真正做某件事前,先做一些事前准备。

Java中有两种代理实现方式 静态代理、动态代理

静态代理:

静态代理实际上就是声明一个和被代理类具有同样方法签名的类,把被代理类实例作为代理类的成员,这样在调用代理类方法,先执行代理类的操作,然后执行被代理类的方法。

被代理类 ,明星能够 拍电影和唱歌

public class Star {
	public void movie() {
		System.out.println("拍电影......");
	}
	
	public void sing() {
		System.out.println("唱歌......");
	}
}

代理类 (StarProxy) 代理明星(Star)承接 拍电影和唱歌的业务

public class StarProxy {
	private Star _star;
	
	public StarProxy(Star star) {
		this._star=star;
	}
	
	public void movie() {
		System.out.println("代理......前");
		_star.movie();
		System.out.println("代理......后");
	}
	
	public void sing() {
		System.out.println("代理......前");
		_star.sing();
		System.out.println("代理......后");
	}
}

在执行代理方法时,在代理方法内部会调用被真正代理类的方法。

public class JMain {

	public static void main(String[] args) {
		StarProxy proxy=new StarProxy(new Star());
		proxy.movie(); //拍电影
		proxy.sing();//唱歌
	}

}

 

动态代理:

动态的为类生成一个代理类,和静态代理最大的不同之处在于,它发生在运行时,不需要单独编写代理类。

在包 java.lang.reflect 下有动态代理的相关实现

这里我们关注两个类型

Proxy和 InvocationHandler

Proxy 根据指定的被代理类class和接口动态生成代理对象

InvocationHandler 代理类实现的接口,当调用被代理类任何方法时,会执行接口Invoke方法。

public static void main(String[] args){
		Star star=new Star();
		
		IStar starproxy=(IStar) Proxy.newProxyInstance(Star.class.getClassLoader(),Star.class.getInterfaces(),new InvocationHandler() {
			@Override
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				System.out.println("代理------前");
				Object ret= method.invoke(star, args);
				System.out.println("代理------后");
				return ret;
			}
		});
		
		starproxy.movie();
		
	}

这里没有预先定义代理类,而是在运行时动态生成的,其底层原理是通过反射来实现,java内置的动态代理 需要被代理类实现一个接口,因此有一定的局限性。

这里介绍另一种实现动态代理的优秀框架 cglib,它采用asm动态织入的方式,在内存中动态生成代理类字节码。

public class JMain {

	public static void main(String[] args) {
		
		StarProxy starProxy = new JMain().new StarProxy();  
		  
        Enhancer enhancer = new Enhancer();  
        enhancer.setSuperclass(Star.class);  
        enhancer.setCallback(starProxy);  
  
        Star o = (Star)enhancer.create();  
		
		o.movie();
	}

	/***
	 * 定义一个代理类,实现方法拦截器接口
	 * @author RWX
	 *
	 */
	class StarProxy implements MethodInterceptor {
		@Override
		public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
			System.out.println("代理调用方法前:" + methodProxy.getSuperName());
			Object o1 = methodProxy.invokeSuper(o, args);
			System.out.println("代理调用方法后: " + methodProxy.getSuperName());
			return o1;
		}
	}

 

芯片测试:WAT、CP、FT 最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。 阅读详情

相关推荐

FileZilla Server目录显示失败的处理方法

这两天河南大暴雨挺严重导致多处停电,我远在郑州机房的服务器也断网连不上了。一直到今天下午才恢复,影响较大,有些客户要数据,可是数据因为断网拿不到。于是我想,要是能把服务器的数据备份到其他地方,比如我的本机或者另外一台电脑该多好。 于是今天一整天我都在找远程备份数据的方法,把一台服务器上的数据实时同步到另外一台上。或者两台服务器互相同步。 找了半天发现了FreeFileSync这个宝藏软件,它的原理很简单是通过ftp传输数据。 我得先在服务器上安装个ftp服务,首选filezilla server,安..

两天打鱼三天晒网 4453

Java回顾:动态代理

动态代理是一种强大的编程思想,其核心在于动态生成代理对象,。这种思想广泛应用于 AOP(面向切面编程)等场景。

jike1232的博客 934

Anthropic发布10款金融AI智能体模板深度解析:重构华尔街工作范式

摘要:2026年5月,Anthropic发布10款金融AI智能体模板,标志着AI从辅助工具升级为"虚拟同事"。这些智能体深度集成到Word、Excel等办公软件中,覆盖投行、商行、资管三大场景的核心工作流,预计可提升效率35-85%。技术架构基于Claude3.5Sonnet模型,具备200K上下文窗口和95%+的财务图表解析准确率,并与彭博等金融数据源直连。发布引发传统金融数据服务商股价下跌,摩根大通等机构则视其为成本优化工具。落地需分四阶段推进,关键在于数据治理和复合型人才培养。未来

yyq916的博客 635

Java回顾-动态代理

动态代理是反射的一个应用。动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。 代理设计模式的原理: 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 要想实现动态代理,需要解决的问题: 问题一:如何根据加载到内存中的被代理类,动态创建一个代理类及其对象。

萌萌虎的博客 171

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1028

实战指南:如何用Kamailio+FreeSWITCH搭建高并发企业通信系统(附配置模板)

本文提供了一份实战指南,详细介绍了如何利用Kamailio与FreeSWITCH构建高并发企业通信系统。通过将Kamailio作为高性能SIP信令平面处理路由与负载均衡,FreeSWITCH作为媒体与应用平面负责通话与业务逻辑,实现信令与媒体分离的电信级架构。文章深入解析了架构设计、核心配置、集群部署与性能优化,并附有配置模板,旨在帮助企业构建可水平扩展、高可用的通信解决方案。

dell8的博客 364

java回顾:springIOC注解开发、整合Junit、回顾动态代理

java回顾:spring注解开发、整合Junit、回顾动态代理

m0_56678122的博客 307

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

java回顾:反射、注解、动态代理

自定义注解、动态代理

m0_56678122的博客 471

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9865

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1085

简单回顾:【Java中的动态代理】

静态代理是字节码一上来就创建好,并完成加载(装饰者模式就是静态代理的一种体现);而动态代理是字节码随用随创建,随用随加载。

weixin_44270855的博客 237

05 Transformer 到底解决了什么问题

Transformer 是现代大语言模型的底层骨架。本文不推公式,而是从 CNN、RNN/LSTM 的瓶颈讲起,解释 Transformer 如何通过自注意力同时解决长距离依赖和并行训练问题,并说明它为什么能支撑 GPT、BERT 和现代大模型的规模化。

老于的笔记的专栏 245

java 动态代理,反射 回顾

有很多文章写的很好了,我来搬运下。理解java反射https://www.cnblogs.com/haodawang/p/5967185.htmljava动态代理https://www.cnblogs.com/gonjan-blog/p/6685611.html说说为什么yao用动态代理1. 一般情况下,想要对一个现有的方法添加一些额外的操作有这样几种办法:比如:public void test(...

潜行者 168

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java中的动态代理和静态代理(回顾)

一、什么是代理 现在有三个人:农民、秘书和领导。 农民要去找领导盖章,但是领导很忙,然后就授权秘书可以代替领导进行盖章操作。 这时候,秘书就代理了领导进行盖章。 这个秘书呢,为了谋取私利,找他盖章的人都要缴纳20元的手续费! 秘书在代理领导盖章工作以外,有增加了一项业务(收手续费),这就是代理的“好处”。 代理(秘书)提供了农民对目标对象(领导)的间接访问方式,农民通过代理(秘书)访问...

lsnaruto的博客 272

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java 反射_Java反射机制与动态代理

1. 概述Java 反射机制与动态代理我们平时写代码可能用得比较少,但在各种常见的框架(Spring、MyBatis 等)中却屡见不鲜。有句话叫“无反射,不框架;无代理,不框架”。由于以后打算阅读和学习框架的源码,这里先简单回顾反射机制和动态代理(暂不深入分析实现原理) ,为后面做些准备 。2. 反射机制Java 反射机制是在 Java 程序运行状态中,对于任意一个类,都能够知道这个类的所有属性和...

weixin_39637233的博客 91

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JDK动态代理与CGLIB动态代理

最近准备写Spring的AOP源码的,结果看了看源码发现思想逻辑设计都比较简单,本来想要从开始注入到后面的方法执行都跟下来走一遍的,但是忘了JDK动态代理和CGLIB动态代理是怎么实现的了,所以写了这篇文章来介绍回忆一下JDK动态代理与CGLIB动态代理。

李永志的博客 938

java的动态代理机制详解

转载自https://www.cnblogs.com/xiaoluo501395377/p/3383130.html 在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP。对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是jav...

春卷同学的博客 180

Java动态代理的具体使用。

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾。在java的动...

weixin_34336526的博客 116

java 动态代理

java的动态代理机制详解 在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾。 在java的动态代...

hyd19931002的博客 144

学习笔记:静态代理/动态代理

可以在运行时拦截到对代理对象方法的调用,并且可以在这个调用前后执行一些逻辑,比如日志记录、权限控制等。它允许在运行时创建代理类,并且可以将方法调用路由到其它的代码,通常是一个代理类实现的方法。今日javaweb看到AOP时突然复习到javaSE的代理的概念,忘记了,这里再回顾一下(我甚至觉得是我自己没学过)简单的代理模式不用到反射机制,代理类在编译时已经确定,所以不能动态的支持多个类的代理。当需求不只这一个对象时,我们可以利用反射机制,获取该类,动态的进行代理。是Java动态代理机制的一个关键接口。

m0_52158439的博客 325

JDK动态代理在拦截器和声明式接口中的应用

Java动态代理技术是基于反射机制的基础。核心在于利用反射机制和接口编程在运行时动态生成代理类,并通过InvocationHandler接口实现代理逻辑的灵活扩展。通过动态代理,Java程序可以在运行时动态地生成代理类,并控制对目标对象的访问,从而实现对目标对象方法的拦截和增强。 其优势在于灵活性、可扩展性、解耦、AOP支持和远程方法调用等方面. Java动态代理原理主要基于Java的反射机制,通过动态地生成代理类来实现对接口的动态代理。

码到三十五 1608

20210702 - 架构 - IOC动态代理实现原理

动态代理 1、生成代理类class public interface HelloInterface { void sayHello(); } public static void main(String[] args) throws Exception { // 生成一个class二进制文件 byte[] bytes = ProxyGenerator.generateProxyClass("DavidHelloImpl", new Class[]{HelloInterface.c

csndwata 479

Spring框架(七)Java JDK 动态代理(AOP)使用及实现原理分析

目录回顾Java反射知识回顾反射知识咋用动态代理什么叫动态代理jdk的动态代理:实现步骤注意 回顾Java反射知识 因为动态代理需要用到,所以我们要先学习Java的反射知识。 Java反射中有Method类 Method类,表示方法类中的方法,通过Method可以执行某个类中的某个方法 回顾反射知识咋用 1 先创建一个接口 package com.test; public interface HelloService { // 根据name打招呼 public void sayHello

一天不写代码难受的博客 603

Java基础知识回顾

关于JavaSE的一些比较基础的内容回顾,也是开始准备秋招和实习了qwq

backordinary的博客 1112

Java SE 核心知识快速回顾 - 项目实战必备

本文系统介绍了Java编程中的五种核心特性:1)注解作为元数据标记,用于权限控制等场景;2)枚举定义常量集合,支持状态管理和响应码处理;3)接口实现多态和契约编程,包括函数式接口;4)匿名内部类及其Lambda简化写法;5)动态代理技术在AOP等场景的应用。这些特性在Spring框架中被广泛使用,如注解驱动开发(@Controller)、枚举状态管理、接口服务抽象等,是理解Spring底层机制的关键基础。掌握这些核心概念能够帮助开发者编写更规范、灵活和高效的Java代码。

zyt2005815的博客 977
上一篇: Net Core 微服务
下一篇: EF Mysql confgi配置文件遇到的坑
IT回忆录
博客等级 码龄16年 42粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值