public class SimplePropertyNamespaceHandler extends java.lang.Object implements NamespaceHandler
NamespaceHandler 実装。注意すべき重要な点は、この NamespaceHandler には対応するスキーマがないため、すべての可能な属性名を事前に知る方法がないためです。 この NamespaceHandler の使用例を以下に示します。
<bean id="rob" class="..TestBean" p:name="Rob Harrop" p:spouse-ref="sally"/>ここで、'
p:name' は、クラス 'TestBean' の 'name' プロパティに直接対応しています。"p:spouse-ref" 属性は "spouse" プロパティに対応し、具体的な値ではなく、そのプロパティに注入される Bean の名前が含まれています。| コンストラクターと説明 |
|---|
SimplePropertyNamespaceHandler() |
| 修飾子と型 | メソッドと説明 |
|---|---|
BeanDefinitionHolder | decorate(org.w3c.dom.Node node, BeanDefinitionHolder definition, ParserContext parserContext) 指定された Node を解析し、提供された BeanDefinitionHolder を装飾して、装飾された定義を返します。 |
void | init() 構築後、カスタム要素が解析される前に DefaultBeanDefinitionDocumentReader によって呼び出されます。 |
BeanDefinition | parse(org.w3c.dom.Element element, ParserContext parserContext) |
public void init()
NamespaceHandlerDefaultBeanDefinitionDocumentReader によって呼び出されます。@Nullable public BeanDefinition parse(org.w3c.dom.Element element, ParserContext parserContext)
NamespaceHandlerElement を解析し、結果の BeanDefinitions を付属の ParserContext に埋め込まれている BeanDefinitionRegistry に登録します。 実装は、(たとえば) <property> タグ内にネストして使用する場合、解析フェーズの結果であるプライマリ BeanDefinition を返す必要があります。
ネストされたシナリオで使用されない場合、実装は null を返す場合があります。
NamespaceHandler 内の parse element - 1 つ以上の BeanDefinitions に解析される要素 parserContext - 解析プロセスの現在の状態をカプセル化するオブジェクト BeanDefinition (上で説明したように null にすることができます)public BeanDefinitionHolder decorate(org.w3c.dom.Node node, BeanDefinitionHolder definition, ParserContext parserContext)
NamespaceHandlerNode を解析し、提供された BeanDefinitionHolder を装飾して、装飾された定義を返します。Node は、カスタム属性または要素が解析されているかどうかに応じて、Attr または Element のいずれかになります。
実装は、完全に新しい定義を返すことを選択できます。これにより、結果の BeanFactory の元の定義が置き換えられます。
提供されている ParserContext を使用して、メイン定義をサポートするために必要な追加の Bean を登録できます。
NamespaceHandler 内の decorate node - 解析されるソース要素または属性 definition - 現在の Bean 定義 parserContext - 解析プロセスの現在の状態をカプセル化するオブジェクト null 値は厳密には無効ですが、元の Bean 定義が返される場合と同様に寛大に扱われます。