これは、どの Bean がどの名前空間に属しているかを正確に推測できるように、XML の一般的な名前空間設計パターンに従っていますか? そうでない場合、正確な評価を行うために基になる API を調べるにはどうすればよいですか?
1 に答える
見つけることはできますが、いくつかのコードを掘り下げる必要があります。名前空間を処理するためのエントリ ポイントは、 の実装ですorg.springframework.beans.factory.xml.NamespaceHandler
。org.springframework.beans.factory.xml.BeanDefinitionParser
この実装は通常、その名前空間のさまざまな最上位要素を処理するために、いくつかの実装をセットアップします。
NamespaceHandler
実装は通常、サポートするスキーマに従って名前が付けられますが、それは保証されていません。spring.handlers
特定の名前空間を担当するハンドラーを確実に判断するには、その名前空間ハンドラーを定義するファイルを見つける必要があります。そのファイルは、含まれている jar の META-INF フォルダーにあります。
例: spring-tx-[version].jar の META-INF フォルダーにはspring.handlers
、次の行を含むファイルがあります。
http\://www.springframework.org/schema/tx=org.springframework.transaction.config.TxNamespaceHandler
つまり、tx
名前空間は によって処理されますTxNamespaceHandler
。そのハンドラのソースコードをinit()
見ると、
registerBeanDefinitionParser("advice", new TxAdviceBeanDefinitionParser());
これは、<tx:advice>
Spring xml のステートメントが によって処理されることを意味しますorg.springframework.transaction.config.TxAdviceBeanDefinitionParser
。同様の方法で任意spring.handlers
にドリルダウンできます。NamespaceHandler