Spring中Aop问题(高分求解)

[复制链接]
查看11 | 回复2 | 2008-12-20 00:06:47 | 显示全部楼层 |阅读模式
我在做aop代理时候做了下面的事情:
public class Daili implements InvocationHandler {
private Object obj;
public Object Bind(Object o){
this.obj = o;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("送你个橘子");
return method.invoke(obj, args);
}
}
我先解释下我的代码,我是想买个computer送个橘子,相当于做个服务。在测试类中调用绑定方法,并且绑定了电脑类。
这个类其实我只是大概明白,但是具体的我真说不清,请高手给我解释下。主要是几个参数具体是什么意思,返回的参数是什么意思。我在测试类中根本没有调用invoke();方法,但是也执行了送橘子的操作,这个invoke方法是自动调用的么?如果不太明白,方便的话留下联系方式我联系你,谢谢。

回复

使用道具 举报

千问 | 2008-12-20 00:06:47 | 显示全部楼层
首先,这是动态代理,但是和spring里面的AOP没有直接关系.你还是做的是java本身的"动态代理".因为你做的是动态代理,所以你的类必须实现InvocationHandler接口.自然,你的实现类"Daili"就必须实现invoke()方法,这个方法是在你调用被代理对象的时候自动执行的,所以不需要你显式调用.实际过程是你要执行被代理对象里面的某个method,这是你的目的(卖电脑),这时你要通过代理对象来做,因为代理对象可以做一些其他的事情(比如:送橘子)."卖电脑"和"送橘子"是一次营销活动的组成部分,送完橘子你必须还要给人家电脑,这个invoke()方法就是在你送橘子的前、中、后去卖电脑,这个才是主要目的....
回复

使用道具 举报

千问 | 2008-12-20 00:06:47 | 显示全部楼层
先解释Bind(Object o)方法:作用:通过被代理对象动态产生代理对象 返回值:动态产生一个代理对象,该对象也实现了被代理对象o相同的接口返回值中参数:被代理对象;被代理对象实现的接口;功能对象------------------------invoke(Object proxy, Method method, Object[] a...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行