03-dubbo客户端与spring结合点分析

2019-01-24  本文已影响0人  cjxz

在使用dubbo时可以分为客户端和服务端两块。客户端接入dubbo的方法如下:

http://code.alibabatech.com/schema/dubbo/dubbo.xsd

<dubbo:reference id="enterpriseSignatureService" interface="com.mph.coreapi.user.service.EnterpriseSignatureService" timeout="60000" version="1.0" />

@Resource
private EnterpriseSignatureService      enterpriseSignatureService;

上面是核心代码节选出来。

public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean, ApplicationContextAware, InitializingBean, DisposableBean {

可以找到getObject方法,下面是调用流程。(节约一点篇幅放到一起)

    @Override
    public Object getObject() throws Exception {
        return get();
    }
    public synchronized T get() {
        if (destroyed) {
            throw new IllegalStateException("Already destroyed!");
        }
        if (ref == null) {
            init();
        }
        return ref;
    }
    private void init() {
        //省略部分代码...
        ref = createProxy(map);
        ConsumerModel consumerModel = new ConsumerModel(getUniqueServiceName(), this, ref, interfaceClass.getMethods());
        ApplicationModel.initConsumerModel(getUniqueServiceName(), consumerModel);
    }
    private T createProxy(Map<String, String> map) {
        //省略部分代码...
        if (logger.isInfoEnabled()) {
            logger.info("Refer dubbo service " + interfaceClass.getName() + " from url " + invoker.getUrl());
        }
        // create service proxy
        return (T) proxyFactory.getProxy(invoker);
    }

从上面可以看出dubbo客户端和spring结合原理。中间创建的过程我都省略了,后面再写一篇更为详细的实现逻辑

上一篇下一篇

猜你喜欢

热点阅读