您的位置:首页 > 编程语言 > Java开发

java 动态代理

2017-07-08 12:33 120 查看
参考:

http://blog.csdn.net/heyutao007/article/details/49738887

http://blog.csdn.net/cuigaochong/article/details/46277219

http://layznet.iteye.com/blog/1182924

代理模式类图如下:



为某个对象提供一个代理,以控制对这个对象的访问。代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理对象代替。代理类负责请求的预处理,过滤,将请求分派给委托类处理、已经委托类执行完请求后的后续处理。

根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种。

静态代理,是在编译阶段就已经确定了代理哪个类。

动态代理,是在执行阶段才确定,用的是JVM的反射机制。

下面主要看一个动态代理的例子,可以实现AOP(面向切面编程)。

首先看下代码结构:



下面是客户类通过动态代理类执行方法的代码:



执行结果如下:

——before method: getName

—–getName—–

—–after method: getName

——before method: getCount

—–after method: getCount

count: 100

我想要代理service对象,例子中有两个service,他们是方法真正执行的地方,是委托类。MyProxy用于生产代理类。MyInvocationHandler是调用处理器,在这里面定义调用前和调用后的处理,将执行委托到委托类。













代码地址:https://github.com/zhouna/invocation.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java动态代理 AOP