public interface UserDAO {
public void save (User u);
}
public class UserDAOImpl implements UserDAO {
@Override
public void save (User u) {
System.out.println("a user saved!" );
}
}
package com.zb.hander;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class Myhandler implements InvocationHandler {
private Object proxy;
public Myhandler (Object proxy) {
this .proxy=proxy;
}
@Override
public Object invoke (Object p, Method method, Object[] args)
throws Throwable {
System.out.println("start in..." );
Object o= method.invoke(proxy, args);
return o;
}
}
public class User {
private Integer id;
private String name;
public Integer getId () {
return id;
}
public void setId (Integer id) {
this .id = id;
}
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
}
public class ProxyTest {
@Test
public void test () {
UserDAOImpl impl = new UserDAOImpl();
UserDAO userDAO =(UserDAO) Proxy.newProxyInstance(UserDAO.class.getClassLoader(),
new Class[] { UserDAO.class }, new Myhandler(impl));
userDAO.save(new User());
}
}