对java代理函数Proxy.newProxyInstance功能的个人理解?

本文介绍了如何使用代理函数同时代理EvgServiceBackendApi和HealthApi两个接口,用于远程调用时的接口规范约束,实现通过代理实现代理逻辑。
摘要由CSDN通过智能技术生成

        刚开始使用这个函数时候也就是有样画样,并不太了解这个代理函数的深入含义,知道在做远程调用接口规范是才发现这个行数的妙用。废话不多说,先来看段代码。

接口1
public interface EvgServiceBackendApi {
    /**
     * Get backend menus
     * @auth XiaoMing.hu
     * @return
     */

    @GetMapping("/getMenus")
    CommonResponse<String> getMenus();
}
接口2
public interface HealthApi {
    
    Response<String> getMenus();
    Response<RequestDto> testGet();
}

 

Object object = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
        new Class<?>[]{EvgServiceBackendApi.class,HealthApi.class}, (proxy, method, args) -> {
           
            //TODO 实现远程调用逻辑,proxy是代理本身,method是接口方法,args是相应接口参数
            System.out.println(method);
            return null;

        });
EvgServiceBackendApi evgServiceBackendApi = (EvgServiceBackendApi)object;
evgServiceBackendApi.getMenus();
HealthApi healthApi = (HealthApi) object;
healthApi.testGet("","");

通过上面代码总结如下:

1、代理函数可以同时设置成对个类的代理

2、 这样做的意义是什么呢,就是作为远程调用的接口的约束。(远程服务,直接把自己实现的接口给开放出来给客户端引用,并通过代理来实现远程调用逻辑即可)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值