您的位置:首页 > 编程语言 > Java开发

java动态代理的简单实现:

2008-08-01 01:42 681 查看
package com.ssh.spring.aop;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class TxHandler implements InvocationHandler {

 private static Object original;

 public static Object bind(Object o) {
  original = o;
  return Proxy.newProxyInstance(o.getClass().getClassLoader(), o
    .getClass().getInterfaces(), new TxHandler());
 }

 public static Object bindWithName(String name) {
  try {
   Class c = Class.forName(name);
   original = c.newInstance();
   return Proxy.newProxyInstance(c.getClassLoader(),
     c.getInterfaces(), new TxHandler());
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

 public Object invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
  System.out.println("我在你先执行");
  System.out.println("proxy:" + proxy.getClass().getName());
  return method.invoke(original, args);
 }

 public static void main(String args[]) {
  IFun p = (IFun) TxHandler.bindWithName("com.ssh.spring.aop.Fun");
  p.sayHiWithYourName("张三");
 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息