package com.test.proxy.demo03; public interface UserService { void add(); void delete(); void update(); void query(); }2.创建接口实现类
package com.test.proxy.demo03; public class UserServiceImpl implements UserService { @Override public void add() { System.out.println("添加一个用户"); } @Override public void delete() { System.out.println("删除了一个用户"); } @Override public void update() { System.out.println("更新了一个用户"); } @Override public void query() { System.out.println("查询一个用户"); } }3.创建代理类
package com.test.proxy.demo03; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class TargetProxy implements InvocationHandler { //创建代理对象 private Object target; //用于注入对象 public void setTarget(Object target) { this.target = target; } //获取真正代理对象的方法 public Object getProxy(){ Object o = Proxy.newProxyInstance(TargetProxy.class.getClassLoader(), target.getClass().getInterfaces(), this); return o; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //增强原来的功能 System.out.println("调用了"+method.getName()+"方法"); //反射调用方法,后面一个是参数 Object invoke = method.invoke(target, args); //添加日志记录 System.out.println("添加日志"); return invoke; } }4.创建测试类
package com.test.proxy.demo03; public class TestUser { public static void main(String[] args) { //创建被代理对象 UserServiceImpl userService = new UserServiceImpl(); //创建代理对象 TargetProxy targetProxy = new TargetProxy(); targetProxy.setTarget(userService); //获取真正的代理类 UserService proxy = (UserService) targetProxy.getProxy(); proxy.add(); proxy.delete(); proxy.query(); proxy.update(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)