Java 代理总结

一、代理

为其他对象提供一种代理以便控制对这个对象的访问。

(1)静态代理

(2)动态代理

1)JDK自带的动态代理

2)javaassist字节码操作库实现

3)CGLIB

4) ASM(底层使用指令,可维护性较差)

 

二、静态代理

静态代理模式一般会有三个角色:

抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口

真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用。也就是真正的业务逻辑在此。

代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

 

三、动态代理

(1)Proxy

InvocationHandler接口

.invoke(Object proxy,Method moehtod,Object[] args)                                                      代理执行接口拦截方法

Proxy

.newProxyInstance(ClassLoader loader,Class[] interfaces,Invcationhandler handler)      创建动态代理实例

 

(2)CGLIB

 MethodInterceptor

  •   intercept(Object obj,Method method,Object[] args,MethodProxy proxy)     Object               拦截方法

 Enhancer

  • setSuperClass(Class superClass)            设置父类
  • setCallback(CallBack callBack)                 设置回调拦截器
  • setClassLoader(ClassLoader loader)
  • create()     Object                                      创建代理对象

MethodProxy

  • invokeSuper(Object obj,Object[] args)    Object    执行代理对象
  • invoke(Object target,Object[] args)     Object       执行被代理对象

 

转载于:https://www.cnblogs.com/maokun/p/7583452.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值