JDK的动态代理总结

来源:互联网 发布:徐州工程学院报修软件 编辑:程序博客网 时间:2024/06/08 17:06

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

 

 


 

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

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

 

原创粉丝点击