码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 动态代理万能工具类

时间:2021-06-02 11:41:10      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:throw   object   ace   ade   ati   targe   tin   set   turn   

Spring 动态代理万能工具类

public class ProxyInvocationHandler implements InvocationHandler {
    //代理谁
    private Object target;

    public void setTarget(Object target) {
        this.target = target;
    }

    //生成代理类
    public Object getProxy(){
        return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
    }

    //调用代理程序的执行方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        log(method.getName());
        Object result=method.invoke(target,args);
        return result;
    }

    public void log(String msg){
        System.out.println("执行了"+msg+"方法");
    }
}
public class Client {
    public static void main(String[] args) {
        //被代理对象,真实角色
        UserServiceImpl userService=new UserServiceImpl();
        //代理角色,不存在
        ProxyInvocationHandler pih = new ProxyInvocationHandler();
        //设置需要代理的对象
        pih.setTarget(userService);
        //动态生成代理类
        UserService proxy = (UserService) pih.getProxy();
        proxy.add();
    }
}

Spring 动态代理万能工具类

标签:throw   object   ace   ade   ati   targe   tin   set   turn   

原文地址:https://www.cnblogs.com/yeyu2000/p/14814305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!