hsipeng / java_learnning_trip

spring springMVC mybatis
0 stars 1 forks source link

20.动态代理 #21

Open hsipeng opened 7 years ago

hsipeng commented 7 years ago

态代理的核心其实就是代理对象的生成, 即Proxy.newProxyInstance(classLoader, proxyInterface, handler)

JDK代理

     - 1.能够实现代码的松耦合,解决代码重复问题
     - 2.需要被代理者必须实现接口
     - 3.动态代理模式只能处理一类业务,如果处理业务不同,需要重新编写动态代理。

cglib

使用动态字节码生成技术实现AOP原理是在运行期间目标字节码加载后,生成目标类的子类,将切面逻辑加入到子类中,所以使用Cglib实现AOP不需要基于接口

cglib和jdk的区别

- jdk创建代理对象,速度较快,cglib创建代理对象的速度较慢
- jdk的动态代理需要实现 --- InvocationHandler接口
- cglib 创建代理对象,底层是通过二进制码创建的,并且生成的代理对象都是目标对象的子类,无接口可以直接生成代理对象。