首页 > 其他分享 >动态代理

动态代理

时间:2022-12-15 09:34:20浏览次数:34  
标签:sell Sell void Object 代理 class 动态 public

java动态代理的使用,不在使用真实的对象调用方法,而是使用代理
定义一个sell接口

public interface Sell {
    void sell();
    void add();
}

实现这个接口

public class Vendor implements Sell{
    @Override
    public void sell() {
        System.out.println("sell method");
    }

    @Override
    public void add() {
        System.out.println("add method");
    }
}

public class DynamicProxy implements InvocationHandler {
    private Object obj;
    public DynamicProxy(Object obj){
        this.obj = obj;
    }
    //proxy代表当前代理对象,method代表调用的方法,args代表参数
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("before");
        Object result = method.invoke(obj, args);
        System.out.println("after");
        return result;
    }
}

public class Main {
    public static void main(String[] args) {
        DynamicProxy inter = new DynamicProxy(new Vendor());
        Sell sell = (Sell) (Proxy.newProxyInstance(Sell.class.getClassLoader(),new Class[]{Sell.class},inter));
        sell.sell();
        sell.add();
    }
}

创建动态代理需要用到Proxy类的public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h)方法。
参数1:类加载器,一般是需要代理的类的类加载器
参数2:一个接口的数组
参数3:方法的实现细节

标签:sell,Sell,void,Object,代理,class,动态,public
From: https://www.cnblogs.com/xiaoovo/p/16984279.html

相关文章

  • 基于springboot休闲娱乐代理售票系统设计与实现的源码+文档
    摘要网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合,利用java技术建设休闲娱乐代理售票系统,实现休闲娱乐代理售票的信息化。则对于进......
  • java中的动态绑定机制
    本文主要讲述java中的动态绑定机制。老韩ppt关于动态绑定机制:示例代码如下:publicclassDynamicBinding{publicstaticvoidmain(String[]args){A......
  • ASP.NET Core 奇淫技巧之动态WebApi
    一.前言接触到动态WebApi(DynamicWebAPI)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件来使......
  • 静态包含和动态包含的区别
    静态包含  vs  动态包含的区别?1)语法不同静态包含语法:<%@incluefile="被包含的页面"%>动态包含语法:<jsp:includepage="被包含的页面">2)参数传递不同......
  • 结合Spring Cloud Bus实现配置动态刷新
    在上一节中我们学习了在SpringCloud微服务系统架构中使用ConfigServer进行本地仓库配置读取和线上环境的远程仓库git配置读取,让我们在多个微服务下也可以进行配置信息的......
  • nginx 反向代理多示例----实现Session共享
    关于session共享的方式有多种:(1)通过nginx的ip_hash,根据ip将请求分配到对应的服务器(2)基于关系型数据库存储(3)基于cookie存储(4)服务器内置的session复制域。(5)基于nosq......
  • gateway动态路由实现 mysql+redis 实现
    前言大家都知道咱们在通常是使用配置文件来实现配置,但是这样就有一个弊端,就是每次修改的时候都要去重启来实现,并且管理起来非常麻烦,所有就有了这种实现方式。现在的实现方式......
  • Zookeeper 实现分布式配置管理实现 @Value 的动态变化 (二)
      概述:  前一篇 zookeeper 实现了的配置管理,但是最后的时候说过没有实现@Value 的动态变化,也就是说没有实现配置文件的动态变化, 今天在昨天的基础上,实现了配置......
  • Gateway 代理日志记录 Filter
    前言我们在使用网关的时候,有时候客户端会有莫名其妙的问题需要服务端辅助定位,这时候有一份完全的请求的信息的日志会非常有帮助,这里提供一种基于过滤器的实现方式。我的实......
  • SpringBoot 设置动态定时任务
    前言SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,不是太灵活,改文章是主要是实现在固定的......