public interface NamespaceHandler
DefaultBeanDefinitionDocumentReader
によって使用される基本インターフェース。 実装は、カスタムトップレベルタグの BeanDefinitionParser
インターフェースの実装とカスタムネストタグの BeanDefinitionDecorator
インターフェースの実装を返すことが期待されています。
パーサーは、<beans>
タグの直下でカスタムタグを検出すると parse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext)
を呼び出し、<bean>
タグの直下でカスタムタグを検出すると decorate(org.w3c.dom.Node, org.springframework.beans.factory.config.BeanDefinitionHolder, org.springframework.beans.factory.xml.ParserContext)
を呼び出します。
独自のカスタム要素拡張を作成する開発者は、通常、このインターフェースを直接実装するのではなく、提供されている NamespaceHandlerSupport
クラスを利用します。
DefaultBeanDefinitionDocumentReader
, NamespaceHandlerResolver
修飾子と型 | メソッドと説明 |
---|---|
BeanDefinitionHolder | decorate(NodeSE source, BeanDefinitionHolder definition, ParserContext parserContext) 指定された Node SE を解析し、提供された BeanDefinitionHolder を装飾し、装飾された定義を返します。 |
void | init() 構築後、カスタム要素が解析される前に DefaultBeanDefinitionDocumentReader によって呼び出されます。 |
BeanDefinition | parse(ElementSE element, ParserContext parserContext) 指定された Element SE を解析し、結果の BeanDefinitions を、提供された ParserContext に埋め込まれている BeanDefinitionRegistry に登録します。 |
void init()
DefaultBeanDefinitionDocumentReader
によって呼び出されます。@Nullable BeanDefinition parse(ElementSE element, ParserContext parserContext)
Element
SE を解析し、結果の BeanDefinitions
を、提供された ParserContext
に埋め込まれている BeanDefinitionRegistry
に登録します。 実装は、(たとえば) <property>
タグ内にネストして使用する場合、解析フェーズの結果であるプライマリ BeanDefinition
を返す必要があります。
ネストされたシナリオで使用されない場合、実装は null
を返す場合があります。
element
- 1 つ以上の BeanDefinitions
に解析される要素 parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト BeanDefinition
(上で説明したように null
にすることができます)@Nullable BeanDefinitionHolder decorate(NodeSE source, BeanDefinitionHolder definition, ParserContext parserContext)
Node
SE を解析し、提供された BeanDefinitionHolder
を装飾し、装飾された定義を返します。Node
SE は、カスタム属性または要素が解析されているかどうかに応じて、Attr
SE または Element
SE のいずれかになります。
実装は、完全に新しい定義を返すことを選択できます。これにより、結果の BeanFactory
の元の定義が置き換えられます。
提供されている ParserContext
を使用して、メイン定義をサポートするために必要な追加の Bean を登録できます。
source
- 解析されるソース要素または属性 definition
- 現在の Bean 定義 parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト null
値は厳密には無効ですが、元の Bean 定義が返される場合と同様に寛大に扱われます。