代理类代码:
package com.aliwebapp.test.proxy;
 
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
 
public class ProxyBean implements InvocationHandler{
    private Object target;  //目标对象
    //代理处理器
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        //TODO其他业务(如记录对象更改日志、事务等)
        System.out.println("拦截方法"+ method.getName() +"处理开始");
        Object res = method.invoke(target, args);
        System.out.println("拦截方法"+ method.getName() +"处理结束");
        return res;
    }
    //返回代理对象
    public Object getProxy(){
        return Proxy.newProxyInstance(target.getClass().getClassLoader(),
                target.getClass().getInterfaces(), this);
    }
    public Object getTarget() {
        return target;
    }
    public void setTarget(Object target) {
        this.target = target;
    }
 
}
接口及实现:
package com.aliwebapp.test.proxy;
 
public interface UserService {
    void saveUser();
}
 
package com.aliwebapp.test.proxy;
 
public class UserServiceImpl implements UserService{
 
    @Override
    public void saveUser() {
        System.out.println("保存对象");
    }
 
}

测试类:
package com.aliwebapp.test.proxy;
 
public class ProxyBeanTest {
    public static void main(String[] args) {
        UserService userServiceImpl = new UserServiceImpl();
        ProxyBean proxy = new ProxyBean();
        proxy.setTarget(userServiceImpl);
        UserService userService = (UserService)proxy.getProxy();
        userService.saveUser();
    }
}
 
运行结果:
拦截方法saveUser处理开始
保存对象
拦截方法saveUser处理结束