Spring 动态代理问题!
<beanid="logInterceptor"class="com.hxy.aop.LogInterceptor"></bean><aop:config><aop:po...
<bean id="logInterceptor" class="com.hxy.aop.LogInterceptor"></bean>
<aop:config>
<aop:pointcut expression="execution(public * com.hxy.dao..*.*(..))" id="servicePointcut"/>
<aop:aspect id="logAspect" ref="logInterceptor">
<aop:before method="before" pointcut-ref="servicePointcut"/>
</aop:aspect>
</aop:config>
我在我的xml文件中配置了这样的配置,在别人的机器上运行的时候,产生的对象是代理对象。但是在我的电脑上为什么就不是代理对象?我用的是spring3.0,另外一台电脑上用的是spring2.5.6。请高手指教!谢了! 展开
<aop:config>
<aop:pointcut expression="execution(public * com.hxy.dao..*.*(..))" id="servicePointcut"/>
<aop:aspect id="logAspect" ref="logInterceptor">
<aop:before method="before" pointcut-ref="servicePointcut"/>
</aop:aspect>
</aop:config>
我在我的xml文件中配置了这样的配置,在别人的机器上运行的时候,产生的对象是代理对象。但是在我的电脑上为什么就不是代理对象?我用的是spring3.0,另外一台电脑上用的是spring2.5.6。请高手指教!谢了! 展开
1个回答
展开全部
首先,这是动态代理,但是和spring里面的AOP没有直接关系.
你还是做的是java本身的"动态代理".
因为你做的是动态代理,所以你的类必须实现InvocationHandler接口.
自然,你的实现类"Daili"就必须实现invoke()方法,这个方法是在你调用被代理对象的时候自动执行的,所以不需要你显式调用.
实际过程是你要执行被代理对象里面的某个method,这是你的目的(卖电脑),这时你要通过代理对象来做,因为代理对象可以做一些其他的事情(比如:送橘子).
"卖电脑"和"送橘子"是一次营销活动的组成部分,送完橘子你必须还要给人家电脑,这个invoke()方法就是在你送橘子的前、中、后去卖电脑,这个才是主要目的.
invoke()方法的参数列表是:Object proxy, Method method, Object[] args
指的是:被代理对象, 要执行的被代理对象中的方法, 要执行的方法中的参数列表
具体到你的例子:卖电脑的业务类, 卖电脑的那个方法, 卖电脑需要的一些数据
返回的是'卖电脑的那个方法'返回的数据,因为在编程时不知道运行时会去代理什么,所以参数列表是个对象数组,返回的是个对象.
你还是做的是java本身的"动态代理".
因为你做的是动态代理,所以你的类必须实现InvocationHandler接口.
自然,你的实现类"Daili"就必须实现invoke()方法,这个方法是在你调用被代理对象的时候自动执行的,所以不需要你显式调用.
实际过程是你要执行被代理对象里面的某个method,这是你的目的(卖电脑),这时你要通过代理对象来做,因为代理对象可以做一些其他的事情(比如:送橘子).
"卖电脑"和"送橘子"是一次营销活动的组成部分,送完橘子你必须还要给人家电脑,这个invoke()方法就是在你送橘子的前、中、后去卖电脑,这个才是主要目的.
invoke()方法的参数列表是:Object proxy, Method method, Object[] args
指的是:被代理对象, 要执行的被代理对象中的方法, 要执行的方法中的参数列表
具体到你的例子:卖电脑的业务类, 卖电脑的那个方法, 卖电脑需要的一些数据
返回的是'卖电脑的那个方法'返回的数据,因为在编程时不知道运行时会去代理什么,所以参数列表是个对象数组,返回的是个对象.
追问
但是不是说,就算不实现那个接口也可以用spring实现动态 代理吗?
我看的是马士兵的教程,我看他在他的电脑上运行的挺正常的啊。而且出来的对象也是代理对象,它的那个类并没有实现你所说的接口。
Storm代理
2023-05-09 广告
2023-05-09 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询