代理模式

…衆ロ難τιáo~ 提交于 2019-11-27 05:46:24

一.静态代理。

静态代理常用的如:三层架构。

缺点是不符合开闭原则。

二.动态代理

1.JDK动态代理 (实现InvocationHandler接口,实现invoke方法,被代理的类需要集成一个接口)

 

Proxy是一个工具类,实际上的作用就是动态生成字节码并编译执行新生成的类。

这里传入的clzz.getInterfaces() 就是为了获取到接口并且为新生成的类提供生成方法。

原理:动态生成字节码生成一个新的类,$Proxy类,$Proxy实现了被调用类的接口,通过反射,生成接口里所有的方法,调用目标方法其实就是在调用$Proxy这个新生成的类的方法,所以JDK动态代理一定要实现一个接口。

可以通过invoke()//代理,before()//代理前,after()//代理后 ,进行对代理方法的统一增强,有点类似Spring的AOP。

2.CGLib动态代理:

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!