public abstract class AbstractBeanDefinitionParser extends ObjectSE implements BeanDefinitionParser
template method
を提供する抽象 BeanDefinitionParser
実装。 任意の複雑な XML を 1 つ以上の BeanDefinitions
に解析する場合は、この BeanDefinitionParser
実装を使用します。XML を 1 つの BeanDefinition
に解析するだけの場合は、このクラスのより簡単で便利な拡張機能、つまり AbstractSingleBeanDefinitionParser
および AbstractSimpleBeanDefinitionParser
を検討することをお勧めします。
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | ID_ATTRIBUTE "id" 属性の定数。 |
static StringSE | NAME_ATTRIBUTE "name" 属性の定数。 |
コンストラクターと説明 |
---|
AbstractBeanDefinitionParser() |
修飾子と型 | メソッドと説明 |
---|---|
BeanDefinition | parse(ElementSE element, ParserContext parserContext) 指定された Element SE を解析し、結果の BeanDefinition(s) を、提供された ParserContext に埋め込まれた BeanDefinitionRegistry に登録します。 |
protected abstract AbstractBeanDefinition | parseInternal(ElementSE element, ParserContext parserContext) 提供された Element SE を 1 つ以上の BeanDefinitions に実際に解析する主要テンプレートメソッド。 |
protected void | postProcessComponentDefinition(BeanComponentDefinition componentDefinition) BeanComponentDefinition の一次解析の後、BeanComponentDefinition が BeanDefinitionRegistry に登録される前に呼び出されるフックメソッド。 |
protected void | registerBeanDefinition(BeanDefinitionHolder definition, BeanDefinitionRegistry registry) |
protected StringSE | resolveId(ElementSE element, AbstractBeanDefinition definition, ParserContext parserContext) 指定された BeanDefinition の ID を解決します。 |
protected boolean | shouldFireEvents() このパーサーが Bean 定義の解析後に BeanComponentDefinition イベントを発生させることになっているかどうかを判別します。 |
protected boolean | shouldGenerateId() 渡された Element SE から読み取る代わりに ID を生成する必要がありますか? |
protected boolean | shouldGenerateIdAsFallback() 渡された Element SE が "id" 属性を明示的に指定していない場合は、代わりに ID を生成する必要がありますか? |
protected boolean | shouldParseNameAsAliases() 要素の "name" 属性を Bean 定義のエイリアスとして解析するかどうかを決定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
@Nullable public final BeanDefinition parse(ElementSE element, ParserContext parserContext)
BeanDefinitionParser
Element
SE を解析し、結果の BeanDefinition(s)
を、提供された ParserContext
に埋め込まれた BeanDefinitionRegistry
に登録します。 実装は、ネストされた方法で(たとえば、<property/>
タグの内部タグとして)使用される場合、解析の結果であるプライマリ BeanDefinition
を返す必要があります。ネストされた方法で使用されない場合、実装は null
を返す場合があります。
BeanDefinitionParser
の parse
element
- 1 つ以上の BeanDefinitions
に解析される要素 parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト。BeanDefinitionRegistry
へのアクセスを提供します BeanDefinition
protected StringSE resolveId(ElementSE element, AbstractBeanDefinition definition, ParserContext parserContext) throws BeanDefinitionStoreException
BeanDefinition
の ID を解決します。generation
を使用すると、名前が自動的に生成されます。それ以外の場合、ID は "id" 属性から抽出され、fallback
を使用して生成された ID になる可能性があります。
element
- Bean 定義が作成された要素 definition
- 登録する Bean 定義 parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト。BeanDefinitionRegistry
へのアクセスを提供します BeanDefinitionStoreException
- 指定された Bean 定義に対して一意の名前を生成できなかった場合 protected void registerBeanDefinition(BeanDefinitionHolder definition, BeanDefinitionRegistry registry)
bean
を提供された registry
に登録します。 サブクラスはこのメソッドをオーバーライドして、提供された bean
が実際に登録されているかどうかを制御したり、さらに多くの Bean を登録したりできます。
デフォルトの実装では、isNested
パラメーターが false
の場合にのみ、指定された bean
が指定された registry
に登録されます。これは、通常、内部 Bean をトップレベル Bean として登録したくないためです。
definition
- 登録する Bean 定義 registry
- Bean が登録されるレジストリ BeanDefinitionReaderUtils.registerBeanDefinition(BeanDefinitionHolder, BeanDefinitionRegistry)
@Nullable protected abstract AbstractBeanDefinition parseInternal(ElementSE element, ParserContext parserContext)
Element
SE を 1 つ以上の BeanDefinitions
に実際に解析する主要テンプレートメソッド。element
- 1 つ以上の BeanDefinitions
に解析される要素 parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト。BeanDefinitionRegistry
へのアクセスを提供します Element
SE の構文解析の結果の 1 次 BeanDefinition
parse(org.w3c.dom.Element, ParserContext)
, postProcessComponentDefinition(org.springframework.beans.factory.parsing.BeanComponentDefinition)
protected boolean shouldGenerateId()
Element
SE から読み取る代わりに ID を生成する必要がありますか? デフォルトでは無効になっています。サブクラスはこれをオーバーライドして ID 生成を有効にすることができます。このフラグは常に ID を生成することに注意してください。この場合、パーサーは "id" 属性をチェックしません。
protected boolean shouldGenerateIdAsFallback()
Element
SE が "id" 属性を明示的に指定していない場合は、代わりに ID を生成する必要がありますか? デフォルトでは無効になっています。サブクラスはこれをオーバーライドして、ID 生成をフォールバックとして有効にすることができます。この場合、パーサーは最初に "id" 属性をチェックし、値が指定されていない場合にのみ生成された ID にフォールバックします。
protected boolean shouldParseNameAsAliases()
デフォルトの実装は true
を返します。
protected boolean shouldFireEvents()
BeanComponentDefinition
イベントを発生させることになっているかどうかを判別します。 この実装はデフォルトで true
を返します。つまり、Bean 定義が完全に解析されたときにイベントが発生します。イベントを抑制するために、これをオーバーライドして false
を返します。
true
は、Bean 定義の解析後にコンポーネント登録イベントを発生させるために使用します。イベントを抑制する false
postProcessComponentDefinition(org.springframework.beans.factory.parsing.BeanComponentDefinition)
, ReaderContext.fireComponentRegistered(org.springframework.beans.factory.parsing.ComponentDefinition)
protected void postProcessComponentDefinition(BeanComponentDefinition componentDefinition)
BeanComponentDefinition
の一次解析の後、BeanComponentDefinition
が BeanDefinitionRegistry
に登録される前に呼び出されるフックメソッド。派生クラスは、このメソッドをオーバーライドして、すべての解析が完了した後に実行されるカスタムロジックを提供できます。
デフォルトの実装はノーオペレーションです。
componentDefinition
- 処理される BeanComponentDefinition