接触过dubbo的同学,见到下面的配置都非常熟悉了,含义不多说。
本章主要目的,对DUBBO配置原理进行剖析。
<beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xmlns:dubbo="/schema/dubbo" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans- /schema/dubbo /schema/dubbo/ "> <!-- 当前应用信息配置 --> <dubbo:application name="demo-provider" /> <!-- 连接注册中心配置 --> <dubbo:registry address="N/A" /> <!-- 暴露服务协议配置 --> <dubbo:protocol name="dubbo" port="20813" /> <!-- 暴露服务配置 --> <dubbo:service interface="" ref="demoService" /> <bean id="demoService" class="" /> </beans>
spring加载xml或annotation,第一步需要将这些配置元数据载入spring容器中,首先确认下这些<dubbo:*>标签,对应的数据载体类。
1. 认识标签对应的数据载体
首先,找到dubbo-config\dubbo-config-spring\src\main\resources\META-INF\文件。找到负责具体解析dubbo标签的handler。
http\:///schema/dubbo=
查看DubboNamespaceHandler 代码
public class DubboNamespaceHandler extends NamespaceHandlerSupport {
static {
();
}
public void init() {
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(, true));
registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionPars