package com.huzy.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyDemo {
public static void main(String[] args) {
//测试
UserDAO userDAO = new UserDAOImpl();
MyInvocationHandler invocationHandler = new MyInvocationHandler();
invocationHandler.setTarget(userDAO);
UserDAO proxyUserDAO = (UserDAO) Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), new Class[]{UserDAO.class}, invocationHandler);
proxyUserDAO.save();
}
}
class MyInvocationHandler implements InvocationHandler {
private Object target;
public void before() {
System.out.println("before method invoke do something");
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
this.before();
method.invoke(target, args);
return null;
}
public Object getTarget() {
return target;
}
public void setTarget(Object target) {
this.target = target;
}
}
interface UserDAO {
public void save();
}
class UserDAOImpl implements UserDAO{
@Override
public void save() {
System.out.println("user dao save invoke");
}
}
java动态代理入门示例
最新推荐文章于 2025-05-19 23:22:26 发布