关于在JAVA中如何实现简单的动态代理
2015-01-04 16:01
387 查看
在JAVA中代理分为两种:1.静态代理 2.动态代理。
今天我们要说的就是第二种代理:动态代理。
代理,顾名思义,就好比一家商店,你买商品不用去生产厂,直接到商店就可以购买,而且可以买到各种各种不单一的商品。
此处,购买多种就体现了代理的重要性。在JAVA中,你需要为多个类增加一些额外的功能,例如 记录日志,增加权限等..都可以使用代理来实现。
在JAVA中实现动态代理很简单,只需要以下几步就可以轻松完成,下面我们来看具体实现步骤。
首先,第一步:你需要为被代理类做一个高层次的解耦,这样就可以实现为不同的类提供相同的代理,即实现一个规范接口。
第二步:编写几个你要代理的类,并且该类需要实现第一步中的接口,在该类中实现接口中定义的方法。
第三步:定义一个代理类,此类需要实现InvocationHandler接口,此处最为关键。在代理类中,你需要将代理类和被代理类进行关联。所以首先需要创建一个Object类型的对象,用来关联被代理者类。
其次还要自行编写一个方法,我们叫它绑定方法,即将代理者和被代理者绑定关联关系,方法返回值是Object,即被代理者实现的接口。
最后,我们要实现InvocationHandler接口中的方法:invoke(Object proxy,Method method,Object[] args)方法。
在改方法的参数中,第一个参数即为代理类对象,第二个为所代理的方法,第三个为方法中的参数。
在改方法中进行业务逻辑的判断,并添加一些额外的操作,例如增加记录日志的功能,然后调用method.invoke()。
今天我们要说的就是第二种代理:动态代理。
代理,顾名思义,就好比一家商店,你买商品不用去生产厂,直接到商店就可以购买,而且可以买到各种各种不单一的商品。
此处,购买多种就体现了代理的重要性。在JAVA中,你需要为多个类增加一些额外的功能,例如 记录日志,增加权限等..都可以使用代理来实现。
在JAVA中实现动态代理很简单,只需要以下几步就可以轻松完成,下面我们来看具体实现步骤。
首先,第一步:你需要为被代理类做一个高层次的解耦,这样就可以实现为不同的类提供相同的代理,即实现一个规范接口。
第二步:编写几个你要代理的类,并且该类需要实现第一步中的接口,在该类中实现接口中定义的方法。
第三步:定义一个代理类,此类需要实现InvocationHandler接口,此处最为关键。在代理类中,你需要将代理类和被代理类进行关联。所以首先需要创建一个Object类型的对象,用来关联被代理者类。
其次还要自行编写一个方法,我们叫它绑定方法,即将代理者和被代理者绑定关联关系,方法返回值是Object,即被代理者实现的接口。
最后,我们要实现InvocationHandler接口中的方法:invoke(Object proxy,Method method,Object[] args)方法。
在改方法的参数中,第一个参数即为代理类对象,第二个为所代理的方法,第三个为方法中的参数。
在改方法中进行业务逻辑的判断,并添加一些额外的操作,例如增加记录日志的功能,然后调用method.invoke()。
相关文章推荐
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 如何实现在已有代码之后添加逻辑之java动态代理
- Java静态代理和动态代理的简单代码实现。
- Java动态代理实现(简单AOP实现)
- Java反射之JDK动态代理实现简单AOP
- Java动态代理之JDK实现和CGlib实现(简单易懂)
- Java动态代理之JDK实现和CGlib实现(简单易懂)火推笔记
- 【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式
- JAVA动态代理 和 Spring AOP 4种通知的简单实现
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- Java反射之JDK动态代理实现简单AOP
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP(转)
- java之动态代理简单实现
- Java动态代理简单实现
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- JAVA动态代理 和 Spring AOP 4种通知的简单实现
- Java反射之JDK动态代理实现简单AOP
- java的动态代理,jdk动态代理,一个Sping AOP的简单实现
- Java动态代理之JDK实现和CGlib实现(简单易懂)