博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对SpringAop的思考之基于jdk的动态代理
阅读量:6710 次
发布时间:2019-06-25

本文共 1171 字,大约阅读时间需要 3 分钟。

hot3.png

说道动态代理,我所接触的分为两种:1、基于jdk的动态代理。2、基于cglib的动态代理。上一章说了,子所以会有动态代理,是因为避免静态代理类太多而出现的(我自己是这么理解的)。好了,废话少说,先来看一下基于jdk的动态代理吧。

首先定义一个接口:

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 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("小明");	}

转载于:https://my.oschina.net/littlestyle/blog/533865

你可能感兴趣的文章
python 利用split读取文本文件中每一行的数字并保存至相应文件夹
查看>>
数据增强(每10度进行旋转,进行一次增强,然后对每张图片进行扩充10张patch,最后得到原始图片数*37*10数量的图片)...
查看>>
C# json 嵌套 排序 生成签名
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第6周学习总结
查看>>
26个Jquery使用小技巧
查看>>
CVE-2012-4774不崩溃
查看>>
49. Group Anagrams
查看>>
79. Word Search
查看>>
卷积神经网络-第七讲
查看>>
static关键字作用
查看>>
第四章 类型基础
查看>>
iOS实践03
查看>>
Android WiFi管理(WIFI_SERVICE)
查看>>
不用加减乘除做加法
查看>>
如何对Linux的grub进行加密
查看>>
[BZOJ2839]集合计数
查看>>
用插值方法构造多项式证明中值问题
查看>>
c++ static const
查看>>
面向对象9:接口
查看>>
Java中abstract和interface的区别
查看>>