jdk动态代理
package proxy.jdk; public interface UserDao { public void add(); public void delete(); }
package proxy.jdk; public class UserDaoimpl implements UserDao{ @Override public void add() { // TODO Auto-generated method stub System.out.println("user add success!"); } @Override public void delete() { // TODO Auto-generated method stub System.out.println("user delete success!"); } }
package proxy.jdk; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Handler implements InvocationHandler{ public Object target; public Handler(Object target) { super(); this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("代理执行前"); Object o = method.invoke(target, args); System.out.println("代理执行后"); return o; } public Object getProxy() { return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this); } }
package proxy.jdk; public class Test { public static void main(String[] args) { UserDao userDao=new UserDaoimpl(); Handler handler=new Handler(userDao); UserDao userProxy = (UserDao) handler.getProxy(); userProxy.add(); userProxy.delete(); } }
posted on 2018-07-31 22:12 Danial7777777 阅读(159) 评论(0) 编辑 收藏 举报