java框架基础 静态代理和动态代理

spring+静态代理 结合spring框架实现的静态代理,接口回掉 立即下载




首先我想说一下,类加载器和反射一个类的区别
class类加载器
xxx.getClass().getClassLoader(); 先通过反射获得,一个类,通过类加载器来加载一个类的同时创建出一个类,而getClass一个类只可以获得这个类中的方法和属性.


class用getclass;  反射获得一个类,getClass一个类只可以获得这个类中的方法和属性.




1、代理模式的分类:
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理分为“静态代理”和“动态代理”:静态代理需要我们自己创建代理对象(需要创建代理类),而动态代理的代理对象是自动生成的,我们不需要关系代理对象的生成过程。




2、代理模式中有“抽象角色(接口)”、“代理角色”、“真实角色(目标角色)”这三个角色,代理对象和真实对象都会去实现“抽象角色”这个接口,     也就是说代理模式是基于接口来实现的。




3、对代理对象的理解,和代码的实现



静态代理

package com.my.proxy;


/*
 * 抽象角色(接口)
 */
public interface IProduct {
	public int product();


}






package com.my.proxy;


//目标对象,真实对象
public class LiLingFactory implements IProduct{


	@Override
	public int product() {
		// TODO Auto-generated method stub
		int product=100;
		System.out.println("我要买鞋子,价格要低于"+product);
		return product;
	}


}






package com.my.proxy;


//代理对象,作为直接对象的代理,静态代理
public class LiLingStore implements IProduct {


	@Override
	public int product() {
		// TODO Auto-generated method stub
		LiLingFactory lf=new LiLingFactory();
		int product = lf.product();
		return product*3;
	}


}




package com.my.proxy;




//这种方式是静态代理
public class Mytest {


	public static void main(String[] args) {
		
		//直接通过工厂,直接对象来获得
		LiLingFactory lf=new LiLingFactory();
		int product = lf.product();
		System.out.println(product+"最低格");
		
		//通过代理对象来获得值	
		LiLingStore store = new LiLingStore();
		int product2 = store.product();
		System.out.println(product2);
	}
}

动态代理

//定义一个房东和租房者相同的方法
public interface HousePrice {	
	public int price();
}

目标对象
package com.my.proxy01;

public class HouseOwer implements HousePrice{

	@Override
	public int price() {
		// TODO Auto-generated method stub
		int price=100;
		System.out.println("房价又涨了,房东又要涨房租了");
		return price;
		
	}

}





package com.my.proxy01;

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

public class MyHouse {
	public static void main(String[] args) {
		/*
		 * loader是类加载器,通过反射来加载类
		 */
		
		//获取直接对象(目标对象)
		HouseOwer houseOwer = new HouseOwer();
		
		//获得类加载器
		ClassLoader houseOwerLoader = houseOwer.getClass().getClassLoader();
		//获得对象中接口方法的一个数组
		Class<?>[] houseOwerinterface = houseOwer.getClass().getInterfaces();
		
		//其实newProxyInstance方法相当于动态的创建了一个类,通过传类加载器,获取中间的接口,创建出来了一个动态代理的类
		HousePrice proxy = (HousePrice) Proxy.newProxyInstance(houseOwerLoader, houseOwerinterface, new InvocationHandler() {
			
			//new InvocationHandler()相当于是一个监听器来监听了直接对象
			
			/*
			 * proxy是获取当前直接对象
			 * method是获取直接对象中的方法
			 * args中的值
			 * 返回值:返回值就是代理对象代用方法的返回值
			 * 
			 * 
			 */
			@Override
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				// TODO Auto-generated method stub
				Object invoke = method.invoke(houseOwer, args);
				System.out.println(method);
				System.out.println("我一定会调用的");
				return invoke;
			}
		});
		//调用代理对象的方法
		int price = proxy.price();
		System.out.println(price);
	}

}










动态代理中的原理,代码注释中已经讲的很清楚了,大家自己看看哈






ANSYS接触分析实战:从法兰连接案例看接触刚度与穿透容差的黄金搭配 本文以法兰连接为实战案例,深入解析了ANSYS接触分析中接触刚度(FKN)与穿透容差(FTOLN)的参数设置策略。通过系统性敏感性分析,揭示了这对关键参数的博弈关系与调优逻辑,旨在帮助工程师在保证计算收敛的同时,获得高精度的有限元分析结果,有效解决工程中的非线性接触难题。 阅读详情

相关推荐

【CQUT】从零开始龙芯杯-开始前的准备

不同级别的Cpu对于vivado综合的时间有较大影响,其中Cpu的单核、多核性能以及cache性能影响权重较高。因此,为了保证学习进度和效率,我们建议在Cpu不低于I5 12400的环境下进行学习。Vivado2023.2安装包约100GB,为了保证成功安装建议留出300GB硬盘空间。龙芯杯的许多资料被托管在gitee,你需要git指令将资料克隆到本地。指定用书:CPU设计实战 Loongarch版 作者:汪文祥、邢金璋。Cpu性能对比网站:https://www.cpu114.com/

weixin_73689971的博客 906

SootUp终极指南:如何快速掌握Java静态分析的智能框架

在当今的软件开发领域,**静态代码分析**已经成为确保代码质量、发现潜在缺陷的关键技术。而**SootUp**作为新一代Java静态分析框架,通过完全重新设计的架构,为开发者和安全研究人员提供了更强大、更灵活的分析能力。🎯 ## 什么是SootUp?为什么选择它? **SootUp**是经典Soot框架的全新版本,专注于Java字节码的静态分析和转换。与传统的Soot相比,SootUp采用了

gitblog_00239的博客 622

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1582

代理详解之静态代理、动态代理、SpringAOP实现

OverrideSystem.out.println("执行方法前...");System.out.println("执行方法后...");@OverrideSystem.out.println("执行方法前...");System.out.println("执行方法后...");@OverrideSystem.out.println("执行方法前...");System.out.println("执行方法后...");

weixin_47480200的博客 2182

USB-C快充协议分析仪:QC/PD双协议识别与功率监测设计

USB-C快充协议是现代移动设备能量传输的核心技术标准,其本质是通过物理层电压特征(如DP/DM组合、CC线BMC编码)实现动态电压协商。理解协议握手原理对充电器研发、兼容性测试及故障诊断至关重要。本方案聚焦受电端(Sink)视角,基于FUSB302B与高阻抗DP/DM采样电路,实现QC2.0/QC3.0/QC4+与PD2.0/PD3.0的实时识别与状态机解析;结合INA219高精度电流检测与μs级同步采样,达成±0.06%功率测量精度。典型应用于快充芯片验证、产线协议一致性测试及第三方评测,为USB供电系

weixin_42153793的博客 243

ICCV 2025 | 哈工大、清华等提出首个双曲学习框架:HLFormer,革新局部相关视频检索

离原点越远,代表的语义越具体(部分)。现有方法大多在传统的欧几里得空间中对视频和文本进行建模,但这往往会导致对视频内在层次结构的错误表示,从而影响检索的准确性。通过UMAP对学习到的帧嵌入进行可视化(如下图),可以观察到,来自同一时刻的视频帧在嵌入空间中聚集在一起,清晰地展示了模型对时序关系的捕捉能力。下图的双曲空间可视化进一步证实了模型的层次建模能力:离原点越近的点,代表的语义层级越高、粒度越粗糙,反之亦然。:既然文本查询描述的是视频的一部分,那么在几何表示上,文本的嵌入向量应该从属于视频的嵌入向量。

我爱计算机视觉 1075

Java动态代理和静态代理详解

什么是代理? 生活中的代理是很常见的,比如代购、律师、中介等,他们都有一个共性就是帮助被代理人处理一些前前后后的事情。而被代理人只需要专注做自己要做的那部分事情就可以了。 Java中的代理也是类似的,代理模式可以实现帮助被代理者完成一些前期的准备工作和后期的善后工作,但是核心的业务逻辑仍然是由被代理者完成。 为什么要使用代理? 被代理类只需要专注于自己的核心代码即可,剩下的交给代理类就可以了,使得代码更加简洁,分工明确。 什么是静态代理? 可以通过纯Java实现,要求被代理类和代理类同时实现相应的一套接口,

怪咖@的博客 1926

百度地图街景图像批量获取

由于个人研究需要在最近试了一下使用API获取百度地图街景图片,在此介绍一下基于我个人需求的百度街景批量获取方法,本文以Python编码作为主要方法,如果对零编码工具有需要的可以关注一下UA城市分析小组刚刚发布的街景图片获取工具。 街景图像用作区域细粒度空间指标测度需要解决几个问题。 1. 首先就是调用额度的限制,现在百度对于个人认证开发者每天可用的街景图像调用额度为100张,在不考虑购买额度上限(1万张600元,其实有经费的前提下可以直接考虑钞能力)的情况下动辄几千上万张的爬取数量会大大增加需要爬取的时间周

boycetoon29的博客 1万+

详解java动态代理机制以及使用场景(一)

说起java动态代理,在我刚开始学java时对这项技术也是十分困惑,明明可以直接调通的对象方法为什么还要使用动态代理?随着学习的不断深入和工作经验的积累,慢慢的体会并理解了java动态代理机制。昨天再给公司新同事做技术培训时有同学就对动态代理产生了疑问,我这里梳理一遍一并记录一下,方便大家查看对自己也是加深记忆。

远方和诗 的博客 6万+

光芯片Photodiode 原理,设计与版图

但是光电二极管相对较大,因为需要接收足够的入射光线,此外,光电二极管的厚度比较小,通常位于 1 um 以下(为了波导模式更好地在波导中传输,减少损耗)。从下图中可以看出,当反偏时,即有光在耗尽层被吸收被转换为电流信号时,增加反向偏压几乎不影响反向电流,因此,对于光电二极管来说,反向电压并不影响反向电流的大小。不施加外部电压(开路状态),光生电压直接输出,流出的电流受到抑制,在两端积累一定的电位差,类似太阳能电池,具体特点是噪声低,但响应速度慢。因此,需要尽可能的减少暗电流,以增加元件对光的灵敏度。

u011699626的博客 977

解锁VS2022!手把手教你本地部署Deepseek

在 VS2022 中本地部署 Deepseek,我们首先需要确保硬件资源的充足,如高性能的 GPU、大容量内存和高速存储等,这是模型稳定运行的基石。如果生成的摘要能够准确概括原文的核心内容,就表明 Deepseek 模型在文本分析方面的功能正常,部署稳定可靠。这对于开发者来说,能够大大提高开发效率,当遇到一些常见的功能实现时,可以借助 Deepseek 模型快速生成基础代码框架,减少手动编写的工作量。在大语言模型的蓬勃发展的当下,Deepseek 凭借其卓越的性能和创新的技术,已然成为该领域的佼佼者。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1万+

【Java基础】代理模式、静态代理、动态代理、JDK与CGLIB代理区别、在spring AOP中的应用

目录 代理模式 静态代理和动态代理 静态代理 动态代理 JDK动态代理 CGLIB动态代理 动态代理在Spring AOP中的应用场景 本人运行环境为JDK8,CGLIB版本为3.1。 在某些情况下,客户不想或者不能直接引用另一个对象,这时候可以创建一个目标对象的代理对象,在客户端和目标对象之间起到中介的作用。“代理”即为目标对象提供一种代理以控制对这个对象的访问。 代理模式 如果你学过设计模式,你应该会知道“代理模式”,即在不用修改原类代码的前提下对原类的一些方法进行功能增强,比如s

奋进的小白粥 435

AI应用架构师实战:超算中AI与量子计算融合的初探与架构

当大模型的算力需求突破E级超算的极限,当量子计算的“量子优势”从实验室走向真实场景,超算+AI+量子计算的融合架构成为解决复杂问题的关键路径。本文从架构师的实战视角出发,系统拆解三者融合的底层逻辑:从“计算本质”的第一性原理推导,到“量子-经典异构”的架构设计;从“量子机器学习”的代码实现,到“金融/医药”的场景落地。我们将回答:如何用超算支撑量子计算的噪声抑制与纠错?如何用量子计算加速AI模型的训练与推理?如何设计可扩展、高可用的融合系统?最终给出架构师的实战指南——从技术选型到运营管理的全流程方法论。

AIGC应用创新大全的博客 923

Java框架基础 静态代理和动态代理

本文转自: http://blog.youkuaiyun.com/code_my_dream/article/details/75145583 首先我想说一下, 类加载器和反射一个类的区别 class类加载器 xxx.getClass().getClassLoader(); 先通过反射获得一个类, 通过类加载器来加载一个类的同时, 创建出一个类, 而getClass一个类只可以获得这个类中的方法...

梦蓝樱飞(一点一滴, 记录个人成长之路) 315

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JAVA框架学习——基础准备(log4j,静态代理与动态代理,枚举,注解)

1.log4j 2.动静态代理 3.枚举 4.注解

rosemaryyoudu的博客 417

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java 静态/动态代理----AOP的实现

第23章 动态代理 本章,我们来探讨Java中另外一个动态特性:动态代理。动态代理是一种强大的功能,它可以在运行时动态创建一个类,实现一个或多个接口,可以在不修改原有类的基础上动态为通过该类获取的对象添加方 法、修改行为,这么描述比较抽象,下文会具体介绍。这些特性使得它广泛应用于各种系统程序、框架和库中,比如Spring、Hibernate、 MyBatis、Guice等。 动态代理是实现面向切面的编程AOP(Aspect Oriented Programming)的基础。切面的例子有日志、性能监控、权限检

norang的博客 1028

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

设计模式之代理模式(静态代理和动态代理)

设计模式之代理模式(静态代理和动态代理)

ChenYiRan123456的博客 300

java中动态代理

Java动态代理通过运行时生成代理类实现功能扩展,核心基于InvocationHandler接口定义增强逻辑(如日志/权限),利用Proxy.newProxyInstance()动态创建实现指定接口的代理对象。仅支持接口代理,通过反射调用目标方法,实现业务逻辑与横切关注点解耦,广泛应用于Spring AOP、RPC调用等场景,相比CGLIB更轻量但无法代理类,是面向接口编程的典型实践。

小古有趣 950

Java动态代理

代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位。代理模式从类型上来说,可以分为静态代理和动态代理两种类型。 在开始之前,我们先假设这样一个场景:有一个蛋糕店,它们卖的蛋糕都是用蛋糕机做的,而且不同种类的蛋糕由不同的蛋糕机来做,这样就有:水果蛋糕机、巧克力蛋糕机等。它们卖的面包片也是用面包机做的,同样不同种类的面包片也是由不同的面包机来做,这样就有:葡萄干面包机、红豆面包机等。这个场景用 Java 语言描述就是下面这样: //

骐骥一跃,不能十步;驽马十驾,功在不舍。 196

java中的动态代理(一)

今天我们来学习java中的另一个重要的特性叫做动态代理。所谓动态代理是可以在java运行过程中动态的创建一个类去实现一个或多个接口,可以在不修改原有类代码的基础上动态的添加功能和方法。正是因为这个特性使动态代理被java的许多框架中被广泛的使用。 在介绍动态代理之前我需要先介绍一下什么是静态代理。在设计模式那一章我曾经介绍过一种设计模式叫做代理模式。在代理模式中有一个公共的接口,...

weixin_34238642的博客 89

java:代理类、静态代理、动态代理

/ 1. 服务接口 (明星的工作规范)// 2. 真实对象,实现接口 (真正的明星)@Override// 模拟核心业务逻辑System.out.println("添加用户...");try {// 模拟耗时操作@Override// 模拟核心业务逻辑System.out.println("删除用户...");try {// 模拟耗时操作特性静态代理动态代理实现方式程序员手动编写代理类JDK 运行时动态生成代理类灵活性差,一个代理类只能代理一种类型。

talenteddriver的博客 831

深入理解 Java 代理:从静态代理到动态代理的完整指南

代理模式(Proxy Pattern)是 Java 中一种重要的设计模式,它通过创建一个代理对象来控制对原始对象的访问。代理对象在客户端和目标对象之间起到中介作用,可以在不修改目标对象代码的情况下,增加额外的功能或控制访问。代理模式的核心价值访问控制:控制客户端对真实对象的访问权限功能增强:在不修改原对象代码的情况下添加新功能延迟加载:只有在真正需要时才创建或加载目标对象简化客户端:客户端只需与代理对象交互,无需了解复杂的实现细节。

yexianglunbai的博客 206

静态代理 和 JDK动态代理

接口:UserManager.java 1 package com.springdemo.manager;2 3 public interface UserManager {4 public void add(String name,String password);5 public void delete(String name);6 public int cou...

weixin_34273479的博客 90

Windows批处理立即关机脚本原理与生产级实践

Windows关机命令是操作系统电源管理的基础操作,其核心依赖于ExitWindowsEx API调用与SeShutdownPrivilege权限机制。理解shutdown.exe的/s(系统关机请求)和/t 0(零通知延迟)参数组合,需深入Winlogon会话协调、服务停止序列及ACPI电源状态切换原理。该技术具备轻量、免安装、可审计等工程优势,在开发测试、工控运维、游戏场景中具有高实用价值。本文围绕shutdown /s /t 0这一关键热词,结合权限校验、OEM兼容、fallback容错等实战策略,系

weixin_34357928的博客 334

静态代理与动态代理的奥秘

本文介绍了Java中静态代理和动态代理的实现方式。在静态代理部分,通过OrderService接口及其实现类展示了硬编码、继承和代理模式三种解决方案,重点分析了静态代理通过关联关系降低耦合度的优点,但也指出其存在类爆炸的缺点。动态代理部分演示了JDK动态代理和CGLIB两种实现:JDK动态代理通过Proxy.newProxyInstance()方法生成代理对象,利用InvocationHandler处理增强逻辑;CGLIB则通过Enhancer类创建代理,采用继承方式实现,需要实现MethodInterce

qq_47896523的博客 325

静态代理和动态代理

代理模式是一种结构型设计模式,它为目标对象提供一种代理,用来控制对目标对象的访问。代理对象在客户端和目标对象之间起到中介的作用。客户端通过代理对象间接地访问目标对象,而不需要直接与目标对象进行交互。可以在不改变目标对象内容的前提下,通过代理对象扩展目标对象的行为逻辑;根据代理创建的时期静态代理:以硬编码的方式,手动定义创建的代理类;动态代理:代理类是在运行时动态创建的,在DK的核心类库中,可以使用 Java.lang.reflect.Proxy 类和接来生成动态代理;代理模式的应用场景。

weixin_71072718的博客 2639
上一篇: linux下常用网络操作(重点)
下一篇: jQuery ajax开发基于json
Code_My_Dream
博客等级 码龄10年 75粉丝 236原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值