jdk 动态代理简单应用

相信大家在项目开发应用服务过程中都曾遇到很头疼的事情,比如服务中依赖的中间件升级,必须要强制升级应用系统,让应用服务系统做些与之无关的事情,下面给大家简单介绍一个场景

_
RPC服务本地动态代理模型

上面中 RPCServiceFacade 为 RPC 服务接口,RPCServiceFacadeAdapter 为本地代理接口,实现了RPC
服务接口, BusinessMgrServiceImpl
为本地应用服务类,RPCServiceFacadeAdapterAgent为RPC代理实现类,封装了获取RPC服务代理过程,RPCProxyHandler
为jdk动态代理,新增内容为中间件升级代码内容。

public   class CredentialsCenterFacadeAdapterAgent<T extends CredentialsCenterFacade> implements IBaseAdapter<T>{

    private CredentialsCenterFacadeAdapter credentialsCenterFacadeAdapter = null;

    @Override
    public T getProxy() throws Exception {
        if(null == credentialsCenterFacadeAdapter){
            throw new  RuntimeException("CredentialsCenterFacadeAdapterAgent error , credentialsCenterFacadeAdapter is empty .");
        }
        return  (T) Proxy.newProxyInstance(credentialsCenterFacadeAdapter.getClass().getClassLoader(),
                credentialsCenterFacadeAdapter.getClass().getInterfaces(), new RpcJDKProxyHandler(credentialsCenterFacadeAdapter));
    }

    public CredentialsCenterFacadeAdapterAgent(CredentialsCenterFacadeAdapter credentialsCenterFacadeAdapter) {
        this.credentialsCenterFacadeAdapter = credentialsCenterFacadeAdapter;
    }

    public CredentialsCenterFacadeAdapterAgent() {
    }

}

以上代码为RPC服务的代理实现类,代理的核心是要拥有被代理类的引用,此引用继承了RPC服务接口。 Spring 提供了jdk自带及
cglib 两种代理方式实现aop切面编程,之所以没有借助Spring的功能,是希望加深对代理的理解

后续还会提供非侵入的方式解决此类问题,敬请关注。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值