动态代理
**接口**
public interface BookService {
public void testProxy(int i);
}
**实现类**
public class Book implements BookService {
@Override
public void testProxy(int i) {
System.out.println("book--testProxy");
}
}
// 创建代理类
public class BookProxy {
public static BookService getProxy(BookService book){
//Proxy.newProxyInstance--创建代理
// 三个参数:类加载器、所执行的接口、方法执行器
Object o = Proxy.newProxyInstance(book.getClass().getClassLoader(), book.getClass().getInterfaces(), new InvocationHandler() {
// 三个参数:
// proxy 代理对象。给jdk所使用。勿动
// method 当前将要执行的目标对象的方法
// args 调用方法 外界传入的值
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("进入动态代理,参数"+Arrays.asList(args));
Object result = method.invoke(book, args);
System.out.println("结束方法的执行");
return result;
}
});
return (BookService)o;
}
}
**测试**
BookService book=new Book();
BookService proxy = BookProxy.getProxy(book);
proxy.testProxy(1);