ソース深さダボ - ダボ設定ファイルの解析

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/red_sheeps/article/details/85239416

この記事のコード:ポイントここ

16年には接触ダボに入って来たから、ただ驚くほど感じ始める、構成が非常に簡単で、シームレスかつ春の構成です。様々なインターネット検索、飼育係+プロバイダー+消費者、テストプロジェクト稼働、そして非常に満足。しかし、ソースのために常に英語で非常に多く、非常に多くのコメントのように、学習に身を持って、私を怖がらせます。最近ようやく最後に記録し、領収書のポイントを持っている少しのデバッグコードを来て気に。

ダボプロフィールデモ

プロバイダ・プロファイル

<?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-3.2.xsd
           http://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

	<dubbo:application name="test-dubbo" />

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

	<dubbo:protocol name="dubbo" port="${dubbo.registry.port}"/>

	<dubbo:service interface="com.redsun.dubbo.provider.ProviderI" ref="providerImpl"/>

</beans>

プロパティファイルの設定

dubbo.registry.address=zookeeper://127.0.0.1:2181

消費者プロファイル

<?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-3.2.xsd
           http://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

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

	<!-- 使用zookeeper集群注册中心暴露发现服务地址 -->
	<dubbo:registry address="${dubbo.registry.address}" timeout="2500" />

	<!--<dubbo:protocol host="192.168.30.56" />-->

	<dubbo:reference id="providerI" interface="com.redsun.dubbo.provider.ProviderI"/>
</beans>

プロバイダとプロパティの設定

ダボの設定ファイルがロードされ

春のロードプロセスはどこに強力な、非常に面倒なのですか?私はゆっくりと少し理解することができ春の負荷のために、この記事を読んで、実際には、将来的になるようになって、ダボメインの設定ファイルが読み込まれ、解析され、今日と述べました。

ダボを識別するために、Spring構成ファイル

設定ファイルをロードするときの春には、まず最初に行うには、設定ファイルを解析することで、ノードは、分析中に発見されたimport時の、それはその後、読んで解析するresource設定ファイルの情報を。以下の詳細なデバッグ春ロードセンタリングトラッキングコードが重要なコードラベルここでは、見つけることは難しいことではありませんを参照してください。
Spring構成ファイルの解析

ダボ設定ファイルを読み込んだ後

ファイルを読んだ後に解析を開始しますdubbo-provider.xml下の図を参照して、ファイルを
カスタム設定ファイルを解析

を続行

在解析完元素之后,怎么就将解析权限交给Dubbo.jar了呢,之前我们所跟踪的代码都是Spring代码中的,此处给出了答案。通过识别元素是Dubbo开头的来获取dubbo-provider.xml配置文件中的头信息,就是我们常说的Schema,来获取Dubbo中的解析Handler --> DubboNamespaceHandler
特定の要素の解析
Spring会获取META-INF/spring.handlers中的信息,大家也许会对这个文件很陌生,我们来看看这里面的信息

http\://dubbo.apache.org/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler
http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler

有没有豁然开朗的感觉,在此配置文件中配置了http\://code.alibabatech.com/schema/dubbo此schema所对应的Handler了,有兴趣的同学可追踪下获取Handler的代码。

:其实Spring也有相应的META-INF/spring.handlers文件,里面也有类似的配置信息,有兴趣的同学可以自行跟踪下

Dubbo配置文件解析

好了,在获取到Dubbo的Handler之后又做了什么呢?

DubboNamespaceHandler – Dubbo处理器

ダボ要素パーサ
这里相信大家就不陌生了吧,此处将Dubbo配置文件中的所有相关的节点都定义了对应的BeanDefinition解析器,此时也就不难想到,在解析到对应的节点时就去获取对应的parsers。

Service的解析

ここのは、サービス・ノードでの追跡の詳細を解析してみましょう。
分析サービス
私たちが解決し始める前に考えて、対応する操作のためのサービスノードの情報を読み取るためによります。
それは何を動作しますか?
ServiceBean解像度
プロセス我々は、対応するサービスがあることを知っている目的はここにあるがある場合、反射の全てが単一たbeanClassパブリックメソッドパラメータで設定され得る、およびコンフィギュレーションファイル内の対応する設定があったかどうかを確認します提供するオブジェクトその後、オブジェクトは最終的にどこに存在しますか?ここに!このコード行は、あまりにも微妙な、と注意しない見つけるのは難しいです。おなじみの春の源はBeanMap Beanのすべての情報を格納するために使用さがあることを知っている必要があります。これは、設定ファイルサービスの設定で、最後に、メモリ内のオブジェクトに変換し、また解決のプロセスを完了しました。DubboNamespaceHandlerinitbeanClassServiceBeanbeanDefinition
サインBean定義

ここに画像を挿入説明

概要

常に、より多くのすべての隠れ家を、前にソースコードを見て自分自身をもたらすことは困難、と。それを降りて、だけでなく、身近なコードの過程で詳細を学ぶために。例えば、場合ならば、構成ファイル内のクラスパスの構成パスを使用していない「:」「/」を書き込み、ほとんど影響、のスプリング・コード・ストリングを持っているつもりです。

ソースコードを読んで、道路上で、あるでしょうフォローアップ〜

おすすめ

転載: blog.csdn.net/red_sheeps/article/details/85239416