Proxy和InvocationHandler模拟Aop底层实现
Spring Aop底层原理Proxy和InvocationHandler
用InvocationHandler和Proxy实现动态代理:
1、编写被代理的类实现指定接口:
//执行代理@Testpublic void TestProxy(){//new一个被代理的对象UserService userService = new UserServiceImpl();//new一个实现InvocationHandler的接口AopProxyImpl Proxyobj = new AopProxyImpl();//将被代理对象通过set方法赋值到代理对象Proxyobj.setProxyObj(userService);//通过Proxy的newProxyInstance方法得到一个代理对象//参数解析://1、被代理对象的ClassLoader//2、被代理对象实现的接口//3、实现InvocationHandler的类UserService userSeviceProxy = (UserService) Proxy.newProxyInstance(userService.getClass().getClassLoader(), userService.getClass().getInterfaces(), Proxyobj);//用返回来的对象调用相关的方法userSeviceProxy.HelloWorld();}