クラス AbstractSimpleBeanDefinitionParser
- 実装されたすべてのインターフェース:
BeanDefinitionParser
Class
SE のプロパティ名の間に 1 対 1 のマッピングが存在する場合の便利な基本クラス。 比較的単純なカスタム XML 要素から単一の Bean 定義を作成する場合は、このパーサークラスを拡張します。結果の BeanDefinition
は、関連する BeanDefinitionRegistry
に自動的に登録されます。
例がうまくいけば、この特定のパーサークラスの使用がすぐに明確になります。次のクラス定義を検討してください。
public class SimpleCache implements Cache { public void setName(String name) {...} public void setTimeout(int timeout) {...} public void setEvictionPolicy(EvictionPolicy policy) {...} // remaining class definition elided for clarity... }
次に、上記のクラスのインスタンスを簡単に構成できるように、次の XML タグが定義されていると仮定します。
<caching:cache name="..." timeout="..." eviction-policy="..."/>
上記の XML タグを実際の SimpleCache
Bean 定義に解析するパーサーの作成を担当する Java 開発者に必要なことは、次のとおりです。
public class SimpleCacheBeanDefinitionParser extends AbstractSimpleBeanDefinitionParser { protected Class getBeanClass(Element element) { return SimpleCache.class; } }
AbstractSimpleBeanDefinitionParser
は、作成された Bean 定義へのプロパティ値の入力に限定されていることに注意してください。提供された XML 要素からコンストラクター引数とネストされた要素を解析する場合は、postProcess(org.springframework.beans.factory.support.BeanDefinitionBuilder, org.w3c.dom.Element)
メソッドを実装して、そのような解析を自分で行うか、(可能性が高い)AbstractSingleBeanDefinitionParser
または AbstractBeanDefinitionParser
クラスを直接サブクラス化する必要があります。
SimpleCacheBeanDefinitionParser
を Spring XML 解析インフラストラクチャに実際に登録するプロセスは、Spring Framework リファレンスドキュメント(付録の 1 つ)で説明されています。
このパーサーの動作例(いわば)については、UtilNamespaceHandler.PropertiesBeanDefinitionParser
のソースコードを参照してください。注意深い(そしてそれほど注意深くない)リーダーは、実装にコードがほとんどないことにすぐに気づくでしょう。PropertiesBeanDefinitionParser
は、次のような XML 要素から PropertiesFactoryBean
を生成します。
<util:properties location="jdbc.properties"/>
注意深いリーダーは、<util:properties/>
要素の唯一の属性が PropertiesFactoryBean
の PropertiesLoaderSupport.setLocation(org.springframework.core.io.Resource)
メソッド名と一致することに気づくでしょう(このように示されている一般的な使用箇所は、任意の数の属性に当てはまります)。PropertiesBeanDefinitionParser
が実際に必要なことは、PropertiesFactoryBean
型を返す AbstractSingleBeanDefinitionParser.getBeanClass(org.w3c.dom.Element)
メソッドの実装を提供することだけです。
- 導入:
- 2.0
- 作成者:
- Rob Harrop, Rick Evans, Juergen Hoeller
- 関連事項:
フィールドサマリー
クラス org.springframework.beans.factory.xml.AbstractBeanDefinitionParser から継承されたフィールド
ID_ATTRIBUTE, NAME_ATTRIBUTE
コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明protected void
doParse
(ElementSE element, ParserContext parserContext, BeanDefinitionBuilder builder) 提供されたElement
SE を解析し、必要に応じて提供されたBeanDefinitionBuilder
を入力します。protected StringSE
extractPropertyName
(StringSE attributeName) 指定された属性名から JavaBean プロパティ名を抽出します。protected boolean
isEligibleAttribute
(StringSE attributeName) 指定された属性が対応する Bean プロパティ値に変換できるかどうかを判断します。protected boolean
isEligibleAttribute
(AttrSE attribute, ParserContext parserContext) 指定された属性が対応する Bean プロパティ値に変換できるかどうかを判断します。protected void
postProcess
(BeanDefinitionBuilder beanDefinition, ElementSE element) 解析が完了した後、Bean 定義をインスペクション / 変更するために派生クラスが実装できるフックメソッド。クラス org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser から継承されたメソッド
doParse, getBeanClass, getBeanClassName, getParentName, parseInternal
クラス org.springframework.beans.factory.xml.AbstractBeanDefinitionParser から継承されたメソッド
parse, postProcessComponentDefinition, registerBeanDefinition, resolveId, shouldFireEvents, shouldGenerateId, shouldGenerateIdAsFallback, shouldParseNameAsAliases
コンストラクターの詳細
AbstractSimpleBeanDefinitionParser
public AbstractSimpleBeanDefinitionParser()
メソッドの詳細
doParse
protected void doParse(ElementSE element, ParserContext parserContext, BeanDefinitionBuilder builder) 提供されたElement
SE を解析し、必要に応じて提供されたBeanDefinitionBuilder
を入力します。この実装は、提供された要素に存在するすべての属性を
PropertyValue
インスタンスにマップし、adds them
をbuilder
にマップします。extractPropertyName(String)
メソッドは、属性の名前と JavaBean プロパティの名前を一致させるために使用されます。- オーバーライド:
- クラス
AbstractSingleBeanDefinitionParser
のdoParse
- パラメーター:
element
- 解析される XML 要素builder
-BeanDefinition
の定義に使用parserContext
- 解析プロセスの現在の状態をカプセル化するオブジェクト- 関連事項:
isEligibleAttribute
指定された属性が対応する Bean プロパティ値に変換できるかどうかを判断します。デフォルトの実装では、"id" 属性および名前空間宣言属性を除き、すべての属性が適格であると見なされます。
- パラメーター:
attribute
- チェックする XML 属性parserContext
-ParserContext
- 関連事項:
isEligibleAttribute
指定された属性が対応する Bean プロパティ値に変換できるかどうかを判断します。デフォルトの実装では、"id" 属性を除き、すべての属性が適格と見なされます。
- パラメーター:
attributeName
- 解析される XML 要素から直接取得された属性名 (非null
)
extractPropertyName
指定された属性名から JavaBean プロパティ名を抽出します。デフォルトの実装では、
Conventions.attributeNameToPropertyName(String)
メソッドを使用して抽出を実行します。返される名前は、標準の JavaBean プロパティ名の規則に従う必要があります。たとえば、setter メソッド '
setBingoHallFavourite(String)
' を持つクラスの場合、返される名前は 'bingoHallFavourite
'(正確に大文字と小文字を区別する)の方がよいでしょう。- パラメーター:
attributeName
- 解析される XML 要素から直接取得された属性名 (非null
)- 戻り値:
- 抽出された JavaBean プロパティ名 (
null
であってはならない)
postProcess
解析が完了した後、Bean 定義をインスペクション / 変更するために派生クラスが実装できるフックメソッド。デフォルトの実装では何も行われません。
- パラメーター:
beanDefinition
- 構築される解析済み(そしておそらく完全に定義済み)の Bean 定義element
- Bean 定義のメタデータのソースであった XML 要素