对SpringAop的思考之基于jdk的动态代理
2015-11-22 00:00
459 查看
说道动态代理,我所接触的分为两种:1、基于jdk的动态代理。2、基于cglib的动态代理。上一章说了,子所以会有动态代理,是因为避免静态代理类太多而出现的(我自己是这么理解的)。好了,废话少说,先来看一下基于jdk的动态代理吧。
首先定义一个接口:
接着,定义实现类:
我们的目标就是为Greeting接口中的方法进行拦截。
我们开始写我们的动态代理类:
就这样,我们完成了基于jdk的动态代理类的代码。。。这个代理类可以代理接口为Greeting的所以实现类了。
首先定义一个接口:
public interface Greeting { public void sayHello(String name); }
接着,定义实现类:
public class GreetImp implements Greeting{ public void sayHello(String name) { // TODO Auto-generated method stub System.out.println("hello"+name); } }
我们的目标就是为Greeting接口中的方法进行拦截。
我们开始写我们的动态代理类:
public class DyemJdkProxy implements InvocationHandler{ private Object obj; public DyemJdkProxy(Object obj) { this.obj=obj; } public <T> T getProxy() { return (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub Object result; System.out.println("方法前"); result=method.invoke(obj, args); System.out.println("方法后"); return result; } }
就这样,我们完成了基于jdk的动态代理类的代码。。。这个代理类可以代理接口为Greeting的所以实现类了。
public static void main(String[] args) { GreetImp greetImp=new GreetImp(); Greeting g=new DyemJdkProxy(greetImp).getProxy(); g.sayHello("小明"); }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统