微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dubbo-源码阅读之服务订阅

配置例子

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="soa-consumer"/>

    <dubbo:registry protocol="zookeeper" address="${zookeeper.url}"/>

    <dubbo:consumer timeout="3000" check="false"/>

    <dubbo:reference id="StudentService"

                     interface="com.liqiang.test.StudentService"/>

</beans>

 

dubboNamespaceHandler配置

原理参考https://www.cnblogs.com/LQBlog/p/9391229.html

public class dubboNamespaceHandler extends NamespaceHandlerSupport {
    public dubboNamespaceHandler() {
    }

    public void init() {
        this.registerBeanDeFinitionParser("application", new dubboBeanDeFinitionParser(ApplicationConfig.class, true));
        this.registerBeanDeFinitionParser("module", new dubboBeanDeFinitionParser(ModuleConfig.class, true));
        this.registerBeanDeFinitionParser("registry", new dubboBeanDeFinitionParser(RegistryConfig.class, true));
        this.registerBeanDeFinitionParser("monitor", new dubboBeanDeFinitionParser(MonitorConfig.class, true));
        this.registerBeanDeFinitionParser("provider", new dubboBeanDeFinitionParser(ProviderConfig.class, true));
        this.registerBeanDeFinitionParser("consumer", new dubboBeanDeFinitionParser(ConsumerConfig.class, true));
        this.registerBeanDeFinitionParser("protocol", new dubboBeanDeFinitionParser(ProtocolConfig.class, true));
        this.registerBeanDeFinitionParser("service", new dubboBeanDeFinitionParser(ServiceBean.class, true));
        this.registerBeanDeFinitionParser("reference", new dubboBeanDeFinitionParser(ReferenceBean.class, false));
        this.registerBeanDeFinitionParser("annotation", new AnnotationBeanDeFinitionParser());
    }

    static {
        Version.checkDuplicate(dubboNamespaceHandler.class);
    }
}

标红的部分则是解析dubbo:reference标签

    <dubbo:reference id="StudentService"
                     interface="com.liqiang.test.StudentService"/>

ReferenceBean

afterPropertiesSet

因为实现了spirng的InitializingBean接口 所以再初始化之后就会调用

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐