Spring中Aop问题(高分求解)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中Aop问题(高分求解)相关的知识,希望对你有一定的参考价值。
我在做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方法是自动调用的么? 如果不太明白,方便的话留下联系方式我联系你,谢谢。
你还是做的是java本身的"动态代理".
因为你做的是动态代理,所以你的类必须实现InvocationHandler接口.
自然,你的实现类"Daili"就必须实现invoke()方法,这个方法是在你调用被代理对象的时候自动执行的,所以不需要你显式调用.
实际过程是你要执行被代理对象里面的某个method,这是你的目的(卖电脑),这时你要通过代理对象来做,因为代理对象可以做一些其他的事情(比如:送橘子).
"卖电脑"和"送橘子"是一次营销活动的组成部分,送完橘子你必须还要给人家电脑,这个invoke()方法就是在你送橘子的前、中、后去卖电脑,这个才是主要目的.
invoke()方法的参数列表是:Object proxy, Method method, Object[] args
指的是:被代理对象, 要执行的被代理对象中的方法, 要执行的方法中的参数列表
具体到你的例子:卖电脑的业务类, 卖电脑的那个方法, 卖电脑需要的一些数据
返回的是'卖电脑的那个方法'返回的数据,因为在编程时不知道运行时会去代理什么,所以参数列表是个对象数组,返回的是个对象. 参考技术A 先解释Bind(Object o)方法:
作用:通过被代理对象动态产生代理对象
返回值:动态产生一个代理对象,该对象也实现了被代理对象o相同的接口
返回值中参数:被代理对象;被代理对象实现的接口;功能对象
------------------------
invoke(Object proxy, Method method, Object[] args)方法:
参数:代理对象;被代理对象的业务方法;业务方法的参数
method.invoke(obj, args); //调用被代理对象的业务方法
应该很清楚了吧,慢慢琢磨一下就好了
以上是关于Spring中Aop问题(高分求解)的主要内容,如果未能解决你的问题,请参考以下文章