スプリングベースの開発 - カスタムタグとその解析
まえがき
春にダボを使ったことがある人なら、同じような設定をしたことがあるはずです。
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />
春の公式文書42.1ラベルをカスタマイズする方法についての詳細な説明の導入部に指摘し、簡単に言えば、カスタムラベルです:
- カスタム要素を記述するためのxmlスキーマの作成
- NamespaceHandler インターフェースを実装するカスタム・ハンドラを記述します。
- BeanDefinitionParser インタフェースを実装する 1 つ以上のカスタム・パーサーを記述します。
- スプリングコンテナへの登録
ラベルのカスタマイズ
カスタムタグは、春が最大かつ最強のフックを提供すると言うことができ、平たく言えば、標準的な公共のプラグイン可能な "インターフェイス "を提供し、コンポーネントを開発するために、その後のパートナーにある、我々は様々な充電器の生産を容易にするために、携帯電話の充電器の業界標準のポートのために理解することができます様々な充電器メーカーの生産を容易にするために、標準の開発。
使用するカスタムラベル
必要に応じてxsdファイルを記述します。
ラベルに対応するエンティティ・クラスを記述します。
タグの解析クラスを記述します。
基本的なカスタムラベルは、2つの主要なインターフェイスを実装する必要があります:NamespaceHandlerSupportは、BeanDefinitionParser spring.handlersファイルの役割:名前空間の特定の処理ハンドルキー:あなたの名前空間であり、他のxmlの使用のためにこの名前空間の導入を通じて。要素の説明オブジェクトの値: ハンドルを指す
**spring.schemasファイルの役割:** 名前空間制約の具体的な処理 特定の制約ファイルをローカルのMETA-INF/ttdubbo.xsdにポイントしてください。
ttdubboの実装
simpleType、complexType、simpleContent、complexContent タグ
<!-- -----------------simpleType ------------------------> <!-- プレーンテキストコンテンツを持つ要素や属性の値を指定し、制約するために使用できる単純な型を定義する。. --> <xsd:element name="description" type="xsd:string"/> // 要素のプレーンテキストのタイプを指定する <xsd:element name="worker"> <xsd:complexType> <xsd:attribute name="id" type="idType"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="idType"> <xsd:restriction base="xsd:integer"/> </xsd:simpleType> <!-- を定義する"worker"要素を持つことを指定する。"id"属性は"idType", これは私のカスタムsimpleTypeで、属性の値の型を指定する。. --> <!-- もちろん、単に"attribute" "type"属性が"xsd:integer",しかし、simpleTypeが確かに要素属性のデータ型を指定できることを、読者にもっと直感的に理解してもらうために、このように書いてみた。. --> <!-- -----------------simpleType ------------------------> <!-- -----------------complexType ------------------------> <!-- complexType 要素は複合型を定義する。複合型の要素は、他の要素を含む要素であり/またはXML要素の属性の解析処理。--> <xsd:element name="student"> <xsd:complexType> <xsd:sequence> <xsd:element name="id" type="xsd:int"></xsd:element> <xsd:element name="name" type="xsd:string"></xsd:element> <xsd:element name="gender" type="xsd:string"></xsd:element> <xsd:element name="addr" type="xsd:string"></xsd:element> </xsd:sequence> <xsd:attribute name="class" type="xsd:string"/> </xsd:complexType> </xsd:element> <!-- このcomplexTypeは、4つの子要素を含むstudent要素の複合型を定義する:id,name,gender,addr,で、シーケンス・インジケータを使って、これら4つの子要素の順序を指定する。. もクラス属性を含む.--> <!-- -----------------complexType ------------------------>
springによるカスタムタグの解析方法
よく言われるスプリングコンテナとは一体何を指しているのでしょうか、また、設定されたビーン属性をどのように保存するのでしょうか。
基本的なコンテナBeanFactory、拡張コンテナApplicationContextは、彼らは基本的に同じである設定ファイルのプロセスを解析します。
ConcurrentHashMapの Mapの実装の ためのストレージ構造、つまり、xmlファイルから最終的に解析され、コンテナであるこのデータ構造に格納されます。 コンフィギュレーションを解析すると、ファイルがどのオブジェクトを使ってストレージを受け取るのか?
春のベースタグとは何ですか?
インポート、エイリアス、ビーン、豆
Spring設定ファイルの解析ポータルはどこにありますか?
BeanDefinitionReaderBeanDefinitionDocumentReaderXmlBeanDefinitionReaderここでは、2つの重要なインターフェースとその実装クラス、および実装クラスに対応するものを示します、DefaultBeanDefinitionDocumentReaderカスタムタグの解析処理
![] ()




