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

 

相关文章:

  • 2021-08-26
  • 2021-11-20
  • 2021-06-11
猜你喜欢
  • 2021-06-14
  • 2021-05-17
  • 2022-01-14
  • 2021-09-14
  • 2021-12-11
  • 2021-08-05
  • 2022-01-03
相关资源
相似解决方案