UserDao接口
package com.pry.cn;
public interface UserDao {
public int add(int a,int b);
public String update(String id);
}
UserDao实现类
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