Java的动态代理中invoke方法是顺序执行的吗?我的怎么这么奇怪?

[复制链接]
查看11 | 回复1 | 2008-5-28 12:59:06 | 显示全部楼层 |阅读模式
我在使用Java的动态代理的时候,implements InvocationHandler,实现它的方法invoke,代码是这样的:

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable

{

Object result = null;



System.out.println("before invoke method :" + method.getName());



result =method.invoke(this.targetObj, args);



System.out.println("after invoke method : " + method.getName());



return result;

}
----------------------------------------------------------------
但是在运行后,在控制台是这样的显示:
before invoke method :getTheNum
after invoke method : getTheNum
the number is : 100
为什么会先执行1.3句,然后再执行第二句??
请大侠赐教!
呵呵~~谢谢.其实在invoke方法里是按顺序执行的.首先执行第一句开始.然后调用方法得到result.最后打印第三句结束.完了再把result返回给代理类代理的方法.
所以看起来顺序是倒着的.
我一开始为什么没有想到呢.真傻!

回复

使用道具 举报

千问 | 2008-5-28 12:59:06 | 显示全部楼层
是这样用的吧,我的一个代码用来在方法前开启事务和方法后关闭的,执行流程应该不会有问题的,你的问题很奇怪啊用动态代理 在getlist的方法用动态代理包装下,加入事务 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import org.hibernate.* import com.strutslet.demo.service.SystemException; public final class TransactionWrapper {
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行