クラス SpringFactoriesLoader
- 既知の直属サブクラス
MockSpringFactoriesLoader
SpringFactoriesLoader は、クラスパスの複数の JAR ファイルに存在する可能性のある "META-INF/spring.factories" ファイルから、指定された型のファクトリをロードしてインスタンス化します。spring.factories ファイルは PropertiesSE 形式である必要があります。ここで、キーはインターフェースまたは抽象クラスの完全修飾名であり、値は実装クラス名のコンマ区切りのリストです。例:
example.MyService=example.MyServiceImpl1,example.MyServiceImpl2ここで、
example.MyService はインターフェースの名前であり、MyServiceImpl1 と MyServiceImpl2 は 2 つの実装です。実装クラスには、インスタンスの作成に使用される単一の解決可能なコンストラクターが必要です。
- プライマリまたは単一のコンストラクター
- 単一のパブリックコンストラクター
- デフォルトのコンストラクター
解決可能なコンストラクターに引数がある場合は、適切な ArgumentResolver を指定する必要があります。インスタンス化の失敗の処理方法をカスタマイズするには、FailureHandler を提供することを検討してください。
- 導入:
- 3.2
- 作成者:
- Arjen Poutsma, Juergen Hoeller, Sam Brannen, Andy Wilkinson, Madhura Bhave, Phillip Webb
ネストされたクラスの要約
ネストされたクラス修飾子と型クラス説明static interface型に基づいてコンストラクター引数を解決するための戦略。static interfaceファクトリをインスタンス化するときに発生する障害を処理するための戦略。フィールドのサマリー
フィールドコンストラクターの概要
コンストラクター修飾子コンストラクター説明protectedSpringFactoriesLoader(@Nullable ClassLoaderSE classLoader, MapSE<StringSE, ListSE<StringSE>> factories) 新しいSpringFactoriesLoaderインスタンスを作成します。方法の概要
修飾子と型メソッド説明static SpringFactoriesLoaderデフォルトのクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。static SpringFactoriesLoaderforDefaultResourceLocation(@Nullable ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。static SpringFactoriesLoaderforResourceLocation(StringSE resourceLocation) デフォルトのクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。static SpringFactoriesLoaderforResourceLocation(StringSE resourceLocation, @Nullable ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。protected <T> @Nullable TinstantiateFactory(StringSE implementationName, ClassSE<T> type, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver, SpringFactoriesLoader.FailureHandler failureHandler) <T> ListSE<T> 構成されたクラスローダーと、引数なしのコンストラクターを予期するデフォルトの引数リゾルバーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。<T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver) 構成されたクラスローダーと指定された引数リゾルバーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装をロードしてインスタンス化します。<T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver, @Nullable SpringFactoriesLoader.FailureHandler failureHandler) 構成されたクラスローダー、指定された引数リゾルバー、指定された障害ハンドラーによって提供されるカスタム障害処理を使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。<T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.FailureHandler failureHandler) 指定されたエラーハンドラーによって提供されるカスタムエラー処理で構成されたクラスローダーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装を読み込んでインスタンス化します。static <T> ListSE<T> loadFactories(ClassSE<T> factoryType, @Nullable ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。loadFactoriesResource(ClassLoaderSE classLoader, StringSE resourceLocation) loadFactoryNames(ClassSE<?> factoryType, @Nullable ClassLoaderSE classLoader) 使用すべきではありません。
フィールドの詳細
FACTORIES_RESOURCE_LOCATION
コンストラクターの詳細
SpringFactoriesLoader
protected SpringFactoriesLoader(@Nullable ClassLoaderSE classLoader, MapSE<StringSE, ListSE<StringSE>> factories) 新しいSpringFactoriesLoaderインスタンスを作成します。- パラメーター:
classLoader- ファクトリのインスタンス化に使用されるクラスローダーfactories- ファクトリクラス名から実装クラス名へのマップ- 導入:
- 6.0
メソッドの詳細
load
構成されたクラスローダーと、引数なしのコンストラクターを予期するデフォルトの引数リゾルバーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。返されるファクトリは
AnnotationAwareOrderComparatorを使用してソートされます。カスタムのインスタンス化戦略が必要な場合は、カスタム
ArgumentResolverおよび / またはFailureHandlerでload(...)を使用します。特定のファクトリ型に対して重複する実装クラス名が検出された場合は、重複した実装型のインスタンスが 1 つだけインスタンス化されます。
- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラス- 例外:
IllegalArgumentExceptionSE- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合- 導入:
- 6.0
load
public <T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver) 構成されたクラスローダーと指定された引数リゾルバーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装をロードしてインスタンス化します。返されるファクトリは
AnnotationAwareOrderComparatorを使用してソートされます。特定のファクトリ型に対して重複する実装クラス名が検出された場合は、重複した実装型のインスタンスが 1 つだけインスタンス化されます。
- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラスargumentResolver- コンストラクター引数をその型で解決するために使用される戦略- 例外:
IllegalArgumentExceptionSE- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合- 導入:
- 6.0
load
public <T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.FailureHandler failureHandler) 指定されたエラーハンドラーによって提供されるカスタムエラー処理で構成されたクラスローダーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装を読み込んでインスタンス化します。返されるファクトリは
AnnotationAwareOrderComparatorを使用してソートされます。特定のファクトリ型に対して重複する実装クラス名が検出された場合は、重複した実装型のインスタンスが 1 つだけインスタンス化されます。
ロードできないファクトリ実装クラス、またはインスタンス化中にエラーが発生した場合、指定された失敗ハンドラーが呼び出されます。
- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラスfailureHandler- ファクトリのインスタンス化の失敗を処理するために使用される戦略- 導入:
- 6.0
load
public <T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver, @Nullable SpringFactoriesLoader.FailureHandler failureHandler) 構成されたクラスローダー、指定された引数リゾルバー、指定された障害ハンドラーによって提供されるカスタム障害処理を使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。返されるファクトリは
AnnotationAwareOrderComparatorを使用してソートされます。特定のファクトリ型に対して重複する実装クラス名が検出された場合は、重複した実装型のインスタンスが 1 つだけインスタンス化されます。
ロードできないファクトリ実装クラス、またはインスタンス化中にエラーが発生した場合、指定された失敗ハンドラーが呼び出されます。
- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラスargumentResolver- コンストラクター引数をその型で解決するために使用される戦略failureHandler- ファクトリのインスタンス化の失敗を処理するために使用される戦略- 導入:
- 6.0
instantiateFactory
protected <T> @Nullable T instantiateFactory(StringSE implementationName, ClassSE<T> type, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver, SpringFactoriesLoader.FailureHandler failureHandler) loadFactories
public static <T> ListSE<T> loadFactories(ClassSE<T> factoryType, @Nullable ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。返されるファクトリは
AnnotationAwareOrderComparatorを使用してソートされます。特定のファクトリ型に対して重複する実装クラス名が検出された場合は、重複した実装型のインスタンスが 1 つだけインスタンス化されます。
SpringFactoriesLoader.ArgumentResolverまたはSpringFactoriesLoader.FailureHandlerをサポートするより高度なファクトリロードの場合は、forDefaultResourceLocation(ClassLoader)を使用してSpringFactoriesLoaderインスタンスを取得します。- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラスclassLoader- ロードに使用する ClassLoader (デフォルトを使用するためにnullにすることができます)- 例外:
IllegalArgumentExceptionSE- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合
loadFactoryNames
@DeprecatedSE(since="6.0") public static ListSE<StringSE> loadFactoryNames(ClassSE<?> factoryType, @Nullable ClassLoaderSE classLoader) 使用すべきではありません。指定されたクラスローダーを使用して、指定された型のファクトリ実装の完全修飾クラス名を "META-INF/spring.factories" からロードします。特定の実装クラス名が指定されたファクトリ型に対して複数回検出された場合、重複は無視されます。
- パラメーター:
factoryType- ファクトリを表すインターフェースまたは抽象クラスclassLoader- リソースのロードに使用する ClassLoader。デフォルトを使用するnullにすることができます- 例外:
IllegalArgumentExceptionSE- ファクトリ名のロード中にエラーが発生した場合- 関連事項:
forDefaultResourceLocation
デフォルトのクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。- 戻り値:
SpringFactoriesLoaderインスタンス- 導入:
- 6.0
- 関連事項:
forDefaultResourceLocation
指定されたクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。- パラメーター:
classLoader- リソースのロードに使用する ClassLoader。デフォルトを使用するnullにすることができます- 戻り値:
SpringFactoriesLoaderインスタンス- 導入:
- 6.0
- 関連事項:
forResourceLocation
デフォルトのクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。- パラメーター:
resourceLocation- ファクトリを探すリソースの場所- 戻り値:
SpringFactoriesLoaderインスタンス- 導入:
- 6.0
- 関連事項:
forResourceLocation
public static SpringFactoriesLoader forResourceLocation(StringSE resourceLocation, @Nullable ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoaderインスタンスを作成します。- パラメーター:
resourceLocation- ファクトリを探すリソースの場所classLoader- リソースのロードに使用する ClassLoader。デフォルトを使用するnullにすることができます- 戻り値:
SpringFactoriesLoaderインスタンス- 導入:
- 6.0
- 関連事項:
loadFactoriesResource
load(Class, ArgumentResolver, FailureHandler)を推奨