Spring-静态代理VS动态代理/实现代理ProxyFactory

文章目录

静态代理VS动态代理

静态代理VS动态代理

参考URL: https://blog.csdn.net/qq_25881443/article/details/103245938

【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

参考URL: https://blog.csdn.net/jiuqiyuliang/article/details/38423811

代理:不用改变源码而增强方法

动态代理有AOP的思想,面向切面编程,基于方法的切面

  1. 静态代理:

    资源类接口UserManager

    实现类UserManagerImp 增删查改方法

    代理类UserManagerImpProxy 增强方法 -> 增删查改的前后通知

    代码冗余,需要为每个类都写一个代理类对象

  2. 动态代理

    只写一个代理类,通过反射机制实现动态代理

    需要java.lang.reflect.InvocationHandler接口和 java.lang.reflect.Proxy 类的支持

Spring实现代理

JDK、CGLIB、Spring 三种实现代理的区别(三)Spring的ProxyFactory

参考URL: https://blog.csdn.net/sunnycoco05/article/details/78901449

为了让大家理解Spring Aop利器ProxyFactory,我已经拼了

参考URL: https://baijiahao.baidu.com/s?id=1659872326546139979\&wfr=spider\&for=pc

Spring中代理对象可通过xml配置方式获得,也可通过ProxyFactory手动编程方式创建对象。我们主要讲手动编程的方式。Spring中的代理对象其实是JDK Proxy和CGLIB Proxy 的结合。

ProxyFactory

ProxyFactory就springAOP创建代理的工厂

ProxyFactory,全称:org.springframework.aop.framework.ProxyFactory,spring帝国spring aop军工厂boss,职责就是生产proxy,即,代理工厂。

工作中遇到问题整理

动态代理异常com.sun.proxy.$Proxy0 cannot be cast to

动态代理异常com.sun.proxy.$Proxy0 cannot be cast to

参考 https://blog.csdn.net/Tritoy/article/details/81019956

意思大致是说com.sun.proxy.$Proxy0不能进行强制转换...

jdk动态代理的过程中,生成动态代理对象与目标对象要是同一个接口:也就是说在使用动态代理时,用来生成代理的委托对象必须是一个接口。

改错后:

java 复制代码
public class Dog implements DogI{
	public void say() {
		System.out.println("miaomiaomiao");
	}
public static void main(String[] args) {
		DogI dog = (DogI)new DogJDKPROXY().getProxyObject(new Dog());
		dog.say();
	}

Dog是继承了DogI接口的。

相关推荐
我命由我123454 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑4 小时前
Sentinel安装
java·后端·微服务
IT_陈寒4 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_4924 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
逝水无殇4 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN5 小时前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了5 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器
凤凰院凶涛QAQ5 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
高明珠6 小时前
麒麟 V10 SP1 排查实录:ttyS5 每 10 秒莫名收到一批报文,元凶是 eGTouchD
后端
卷无止境6 小时前
Python FFI 技术深度解析:ctypes、cffi 与 pybind11 的性能差异与实践挑战
后端·python