【知识点】Java代理实现方式
Java 代理的几种实现方式
静态代理
通过创建一个代理类来控制对目标对象的访问(也就是手动编写一个代理类)。
静态代理的优点是易于理解和实现,缺点是每个接口都需要定义一个代理类,而且功能较弱。
动态代理
动态代理分两种,Proxy接口代理和CGLib代理
接口代理
Proxy 代理是JDK内置代理方式,通过接口实现,使用反射动态实现一个实现相同接口的代理类,来达到代理功能。
因此只能代理接口(或者说实现接口的类)。
CGLib
CGLib(Code Generation Library)通过ASM动态生成子类的方式进行代理,因此不能代理final
类。
ASM:Assembly,字节码修改技术
Spring 中的动态代理:
Spring 默认使用JDK代理方式,如果类没有实现接口则会选择CGLib进行代理。
使用JDK Proxy类进行代理不需要引入第三方库,同时类也需要实现一个接口,符合Java面向接口编程的最佳实践。
本文作者:编程随写
本文链接:https://www.cnblogs.com/code-blog/p/18111638
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步