package com.pry.cn; public interface UserDao { public int add(int a,int b); public String update(String id); }
package com.pry.cn; public class UserDaoImpl implements UserDao { @Override public int add(int a, int b) { System.out.println("add方法执行了"); return a + b; } @Override public String update(String id) { System.out.println("update方法执行了"); return id; } }
class UserDaoProxy implements InvocationHandler { private Object obj; public UserDaoProxy(Object obj) { this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("增强方法执行前:" + method.getName() + "参数:" + Arrays.toString(args)); Object res = method.invoke(obj, args); System.out.println("增强方法执行后:" + obj); return res; } }
public class MainRum { public static void main(String[] args) { Class[] interfaces = {UserDao.class}; UserDaoImpl userDao = new UserDaoImpl(); UserDao dao = (UserDao) Proxy.newProxyInstance(MainRum.class.getClassLoader(), interfaces, new UserDaoProxy(userDao)); dao.add(2, 6); } }
增强方法执行前:add参数:[2, 6] add方法执行了 增强方法执行后:com.pry.cn.UserDaoImpl@2503dbd3