什么是动态代理,在那里用到?jdk动态代理和cglib的区别,他们分别在什么情况下使用
时间: 2024-05-27 13:12:30 浏览: 12
动态代理是一种机制,它可以在运行时动态地创建代理类和代理对象。代理类和代理对象实现了被代理接口,通过代理对象来调用被代理对象的方法,提供了一种非常灵活的方式来扩展当前类的功能。
动态代理常见的应用场景是通过反射机制在运行时生成代理类来增强某些业务逻辑,比如 AOP (面向切面编程)。
JDK动态代理采用的是基于接口的代理模式,只能代理接口中定义的方法,而不能代理类中的方法。CGLib是基于继承的代理模式,通过生成一个被代理类的子类来代替被代理类,所以CGLib可以代理类中的方法。
JDK动态代理在性能和稳定性上优于CGLib,但要求目标对象必须要实现接口。而CGLib没有这个限制,但在复杂业务场景下,CGLib可能比JDK动态代理更容易出现问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)