读书人

JDK的动态署理总结

发布时间: 2012-12-27 10:17:10 作者: rapoo

JDK的动态代理总结

jdk的动态代理是基于接口的,必须实现了某一个或多个任意接口才可以被代理,并且只有这些接口中的方法会被代理。

我们需要写一个自定义的调用处理器(实现接口java.lang.reflect.InvocationHandler),然后使用类java.lang.reflect.Proxy中的静态方法生成代理类,并把这个代理类当做原先的类使用就可以。

?

1.返回一个与业务代表对象有相同接口的代理对象

public static Object decorate(Object delegate) {return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass().getInterfaces(), new XAWrapperHandler(delegate));} 

?2.包装业务代表对象所有的业务方法

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object result = null;session = SessionFactory.getSession();try {Transaction tx = session.beginTransaction();//调用原始业务对象的业务方法result = method.invoke(delegate, args);session.flush();tx.commit();} catch (Throwable t) {ta.rollback();}return result;}

?3
JDK的动态署理总结
?

?
JDK的动态署理总结


JDK的动态署理总结

?

动态代理的详细可见这篇:

http://www.cnblogs.com/huxi/archive/2009/12/16/1625899.html

?

读书人网 >编程

热点推荐