クラス BeanOverrideHandler
警告 : 実装はキャッシュキーとして使用され、オーバーライドする Bean を識別するために使用される一意のメタデータセットに基づいて適切な equals() および hashCode() メソッドを実装する必要があります。オーバーライドされた equals() および hashCode() メソッドは、すべての Bean オーバーライドで使用される基本メタデータをサポートするために、このクラスの super 実装にも委譲する必要があります。さらに、診断を強化するために、実装で toString() をオーバーライドして、関連するすべてのメタデータを含めることをお勧めします。
BeanOverrideHandler の具体的な実装では、オーバーライドインスタンスの作成中に使用する追加のメタデータを保存できます (たとえば、アノテーション、アノテーション付きフィールド、アノテーション付きクラスの追加処理に基づいて保存できます)。
注意 : オーバーライドできるのはシングルトン Bean のみです。非シングルトン Bean をオーバーライドしようとすると、例外が発生します。
- 導入:
- 6.2
- 作成者:
- Simon Basl é , Stephane Nicoll, Sam Brannen
コンストラクターの概要
コンストラクター修飾子コンストラクター説明protectedBeanOverrideHandler(FieldSE field, ResolvableType beanType, StringSE beanName, StringSE contextName, BeanOverrideStrategy strategy) 指定された値から新しいBeanOverrideHandlerを構築します。protectedBeanOverrideHandler(FieldSE field, ResolvableType beanType, StringSE beanName, BeanOverrideStrategy strategy) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。メソッドのサマリー
修飾子と型メソッド説明protected abstract ObjectSEcreateOverrideInstance(StringSE beanName, BeanDefinition existingBeanDefinition, ObjectSE existingBeanInstance) このBeanOverrideHandlerのメタデータに基づいて、既存のBeanDefinitionまたは既存のシングルトン Bean の Bean オーバーライドインスタンスを作成します。booleanstatic ListSE<BeanOverrideHandler>forTestClass(ClassSE<?> testClass) final StringSE上書きする Bean 名を取得するか、型getBeanType()の一致する単一の Bean を検索するためにnullを取得します。final ResolvableTypeオーバーライドする Bean 型を取得します。final StringSEこのハンドラーを適用するコンテキスト階層レベルの名前を取得します。final FieldSEgetField()@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 オーバーライドハンドラーのリスト
- 関連事項:
findAllHandlers(Class)
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
public int hashCode()toString
BeanOverrideHandler(Field, ResolvableType, String, String, BeanOverrideStrategy)を推奨