动态代理
-
代理
- 代购
- 中介等等
-
代理的作用
- 功能增强: 在原有的功能上增加了额外的功能,新增加的功能,叫做功能增强
- 控制访问: 代理类不让你访问目标,例如商家不让访问厂家、
-
实现代理方式
-
静态代理:代理类是手工实现的,自己创建一个java类,表示代理类,同时你所需要代理的目标类是确定的
- 实现简单
- 容易理解
- 代理类完成的功能:
- 功能增强
- 目标方法调用
- 缺点: 当代理目标增加了 代理类会成倍增加 一旦被代理的接口修改会影响众多的实现类
-
动态代理:在静态代理中目标类很多时候,可以使用动态代理,避免静态搭理的缺点
动态代理中目标类即是很多, 代理类数量可以很少 当你修改了接口中的方法时 不影响代理类
- 在程序执行过程中,使用jdk的反射机制,创建代理对象,并动态的指定要代理目标类 - 换句话说: 动态代理是一种创建java对象的能力,
-
两种实现方式
- jdk动态代理: 使用java反射包中的类和接口实现动态代理的功能
- cglib动态代理:cglib 通过继承目标类,创建他的子类,在子类中重写父类中同名的方法,实现功能的修改
- 在很多的框架中使用
- mybasit,spring 中都有使用
- 在很多的框架中使用