设计模式之代理模式
静态代理
静态代理的本质,就是通过特有方法对指定方法,在调用前后进行程序处理
动态代理
动态代理分为 JDK动态代理 与 CGLib动态代理。相对于静态代理,动态代理更灵活。本质就是通过反射的方式创建代理对象。从JVM 角度讲,静态代理会生成一个指定的class文件,而动态代理是在运行时动态生成字节码,加载到JVM 中。JDK动态代理效率高,首选此方式代理。
JDK动态代理
注意点:
- CustomHandler 必须实现 InvocationHandler
- trageClass 必须实现接口
- 通过 Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) 方法创建代理对象,CustomHandler 的invoke方法中自定义前后程序。
CGLib 动态代理
注意点:
- trageClass 必须有父类
- CustomInterceptor 必须 MethodInterceptor,本质就是使用拦截器
- 通过 Enhancer的creator方法实现代理
- CGLib 是基于java的扩展功能,有自己的编译器
Spring 中动态代理
Spring AOP 的本质就是动态代理,以下代码:
__EOF__

本文作者:之士咖啡
本文链接:https://www.cnblogs.com/zz-1q/p/16126411.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zz-1q/p/16126411.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人