クラス BeanOverrideHandler
警告 : 実装はキャッシュキーとして使用され、オーバーライドする Bean を識別するために使用される一意のメタデータセットに基づいて適切な equals() および hashCode() メソッドを実装する必要があります。オーバーライドされた equals() および hashCode() メソッドは、すべての Bean オーバーライドで使用される基本メタデータをサポートするために、このクラスの super 実装にも委譲する必要があります。さらに、診断を強化するために、実装で toString() をオーバーライドして、関連するすべてのメタデータを含めることをお勧めします。
BeanOverrideHandler の具体的な実装では、オーバーライドインスタンスの作成中に使用する追加のメタデータを保存できます (たとえば、アノテーション、アノテーション付きフィールド、アノテーション付きクラスの追加処理に基づいて保存できます)。
シングルトンセマンティクス
非シングルトン Bean を置き換える場合、非シングルトン Bean は、ハンドラーによって作成された Bean オーバーライドインスタンスに対応するシングルトン Bean に置き換えられ、対応する Bean 定義はシングルトンに変換されます。ハンドラーがプロトタイプまたはカスタムスコープの Bean をオーバーライドした場合、オーバーライドされた Bean はシングルトンとして扱われます。
FactoryBean によって作成された Bean を置き換える場合、FactoryBean 自体は、ハンドラーによって作成された Bean オーバーライドインスタンスに対応するシングルトン Bean に置き換えられます。
FactoryBean によって作成された Bean をラップする場合、FactoryBean 自体ではなく、FactoryBean によって作成されたオブジェクトがラップされます。
- 導入:
- 6.2
- 作成者:
- Simon Basl é , Stephane Nicoll, Sam Brannen
- 関連事項:
コンストラクター概要
コンストラクター修飾子コンストラクター説明protectedBeanOverrideHandler(@Nullable FieldSE field, ResolvableType beanType, @Nullable StringSE beanName, StringSE contextName, BeanOverrideStrategy strategy) 指定された値から新しいBeanOverrideHandlerを構築します。protectedBeanOverrideHandler(@Nullable FieldSE field, ResolvableType beanType, @Nullable StringSE beanName, BeanOverrideStrategy strategy) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。方法の概要
修飾子と型メソッド説明protected abstract ObjectSEcreateOverrideInstance(StringSE beanName, @Nullable BeanDefinition existingBeanDefinition, @Nullable ObjectSE existingBeanInstance) このBeanOverrideHandlerのメタデータに基づいて、既存のBeanDefinitionまたは既存のシングルトン Bean の Bean オーバーライドインスタンスを作成します。booleanstatic ListSE<BeanOverrideHandler> forTestClass(ClassSE<?> testClass) 上書きする Bean 名を取得するか、型getBeanType()の一致する単一の Bean を検索するためにnullを取得します。final ResolvableTypeオーバーライドする Bean 型を取得します。final StringSEこのハンドラーを適用するコンテキスト階層レベルの名前を取得します。getField()@BeanOverrideでアノテーションが付けられたFieldSE を取得します。final BeanOverrideStrategyこのBeanOverrideHandlerのBeanOverrideStrategyを取得します。これは、Bean オーバーライドインスタンスを作成する方法とタイミングに影響します。inthashCode()toString()protected voidtrackOverrideInstance(ObjectSE override, SingletonBeanRegistry singletonBeanRegistry) このBeanOverrideHandlerによって作成された、提供された Bean オーバーライドインスタンスを追跡します。
コンストラクターの詳細
BeanOverrideHandler
@DeprecatedSE(since="6.2.6", forRemoval=true) protected BeanOverrideHandler(@Nullable FieldSE field, ResolvableType beanType, @Nullable StringSE beanName, BeanOverrideStrategy strategy) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。Spring Framework 6.2.6 以降、BeanOverrideHandler(Field, ResolvableType, String, String, BeanOverrideStrategy)を推奨指定された値から新しいBeanOverrideHandlerを構築します。@ContextHierarchyを適切にサポートするには、代わりにBeanOverrideHandler(Field, ResolvableType, String, String, BeanOverrideStrategy)を呼び出します。- パラメーター:
field-@BeanOverrideでアノテーションされたFieldSE、または型レベルで@BeanOverrideが宣言されている場合はnullbeanType- 上書きする Bean の型beanName- 上書きする Bean の名前、または型で一致する単一の Bean を検索する場合はnullstrategy- 使用するBeanOverrideStrategy
BeanOverrideHandler
protected BeanOverrideHandler(@Nullable FieldSE field, ResolvableType beanType, @Nullable StringSE beanName, StringSE contextName, BeanOverrideStrategy strategy) 指定された値から新しいBeanOverrideHandlerを構築します。- パラメーター:
field-@BeanOverrideでアノテーションされたFieldSE、または型レベルで@BeanOverrideが宣言されている場合はnullbeanType- 上書きする Bean の型beanName- 上書きする Bean の名前、または型で一致する単一の Bean を検索する場合はnullcontextName- ハンドラーを適用するコンテキスト階層レベルの名前、または、ハンドラーをコンテキスト階層内のすべてのアプリケーションコンテキストに適用することを示す空の文字列strategy- 使用するBeanOverrideStrategy- 導入:
- 6.2.6
メソッドの詳細
forTestClass
指定されたtestClassを処理し、テストクラスとその型階層の@BeanOverrideフィールドから派生した対応するBeanOverrideHandlerリストを構築します。このメソッドは、囲むクラス階層を検索せず、クラスまたはインターフェース上の
@BeanOverride宣言を検索しません。- パラメーター:
testClass- 処理するテストクラス- 戻り値:
- Bean オーバーライドハンドラーのリスト
- 関連事項:
getField
@BeanOverrideでアノテーションが付けられたFieldSE を取得します。getBeanType
オーバーライドする Bean 型を取得します。getBeanName
上書きする Bean 名を取得するか、型getBeanType()の一致する単一の Bean を検索するためにnullを取得します。getContextName
このハンドラーを適用するコンテキスト階層レベルの名前を取得します。空の文字列は、このハンドラーをすべてのアプリケーションコンテキストに適用する必要があることを示します。
このハンドラーにコンテキスト名が設定されている場合、
@ContextConfiguration(name=...)を介して設定された名前と一致する必要があります。- 導入:
- 6.2.6
- 関連事項:
getStrategy
このBeanOverrideHandlerのBeanOverrideStrategyを取得します。これは、Bean オーバーライドインスタンスを作成する方法とタイミングに影響します。createOverrideInstance
protected abstract ObjectSE createOverrideInstance(StringSE beanName, @Nullable BeanDefinition existingBeanDefinition, @Nullable ObjectSE existingBeanInstance) このBeanOverrideHandlerのメタデータに基づいて、既存のBeanDefinitionまたは既存のシングルトン Bean の Bean オーバーライドインスタンスを作成します。- パラメーター:
beanName- 上書きされる Bean の名前existingBeanDefinition- 指定された Bean 名に対する既存の Bean 定義、または利用できないか関連がない場合はnullexistingBeanInstance- 折り返しの目的で提供された Bean 名の既存のインスタンス、または利用できないか関連がない場合はnull- 戻り値:
- Bean をオーバーライドするインスタンス
- 関連事項:
trackOverrideInstance
protected void trackOverrideInstance(ObjectSE override, SingletonBeanRegistry singletonBeanRegistry) このBeanOverrideHandlerによって作成された、提供された Bean オーバーライドインスタンスを追跡します。デフォルトの実装では、提供されたインスタンスを追跡しませんが、必要に応じてサブクラスでオーバーライドできます。
- パラメーター:
override- 追跡する Bean オーバーライドインスタンスsingletonBeanRegistry- このハンドラーがシングルトン Bean の形式で追跡状態を保存できるレジストリ- 関連事項:
equals
hashCode
toString
BeanOverrideHandler(Field, ResolvableType, String, String, BeanOverrideStrategy)を推奨