クラス SpringFactoriesLoader
- 既知の直属サブクラス
MockSpringFactoriesLoader
SpringFactoriesLoader
は、クラスパスの複数の JAR ファイルに存在する可能性のある "META-INF/spring.factories" ファイルから、指定された型のファクトリをロードしてインスタンス化します。spring.factories
ファイルは Properties
SE 形式である必要があります。ここで、キーはインターフェースまたは抽象クラスの完全修飾名であり、値は実装クラス名のコンマ区切りのリストです。例:
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
ファクトリをインスタンス化するときに発生する障害を処理するための戦略。フィールドサマリー
コンストラクターのサマリー
修飾子コンストラクター説明protected
SpringFactoriesLoader
(ClassLoaderSE classLoader, MapSE<StringSE, ListSE<StringSE>> factories) 新しいSpringFactoriesLoader
インスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明static SpringFactoriesLoader
デフォルトのクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoader
インスタンスを作成します。static SpringFactoriesLoader
forDefaultResourceLocation
(ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、 "META-INF/spring.factories" からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoader
インスタンスを作成します。static SpringFactoriesLoader
forResourceLocation
(StringSE resourceLocation) デフォルトのクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoader
インスタンスを作成します。static SpringFactoriesLoader
forResourceLocation
(StringSE resourceLocation, ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された場所からファクトリ実装をロードしてインスタンス化するSpringFactoriesLoader
インスタンスを作成します。protected <T> T
instantiateFactory
(StringSE implementationName, ClassSE<T> type, SpringFactoriesLoader.ArgumentResolver argumentResolver, SpringFactoriesLoader.FailureHandler failureHandler) <T> ListSE<T>
構成されたクラスローダーと、引数なしのコンストラクターを予期するデフォルトの引数リゾルバーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。<T> ListSE<T>
load
(ClassSE<T> factoryType, SpringFactoriesLoader.ArgumentResolver argumentResolver) 構成されたクラスローダーと指定された引数リゾルバーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装をロードしてインスタンス化します。<T> ListSE<T>
load
(ClassSE<T> factoryType, SpringFactoriesLoader.ArgumentResolver argumentResolver, SpringFactoriesLoader.FailureHandler failureHandler) 構成されたクラスローダー、指定された引数リゾルバー、指定された障害ハンドラーによって提供されるカスタム障害処理を使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。<T> ListSE<T>
load
(ClassSE<T> factoryType, SpringFactoriesLoader.FailureHandler failureHandler) 指定されたエラーハンドラーによって提供されるカスタムエラー処理で構成されたクラスローダーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装を読み込んでインスタンス化します。static <T> ListSE<T>
loadFactories
(ClassSE<T> factoryType, ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定された型のファクトリ実装を "META-INF/spring.factories" からロードしてインスタンス化します。loadFactoriesResource
(ClassLoaderSE classLoader, StringSE resourceLocation) loadFactoryNames
(ClassSE<?> factoryType, ClassLoaderSE classLoader) 使用すべきではありません。
フィールドの詳細
FACTORIES_RESOURCE_LOCATION
ファクトリを探す場所です。複数の JAR ファイルに存在できます。
- 関連事項:
コンストラクターの詳細
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(...)
を使用します。Spring Framework 5.3 の時点で、特定のファクトリ型に対して重複する実装クラス名が検出された場合、重複する実装型の 1 つのインスタンスのみがインスタンス化されます。
- パラメーター:
factoryType
- ファクトリを表すインターフェースまたは抽象クラス- 例外:
IllegalArgumentExceptionSE
- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合- 導入:
- 6.0
load
public <T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.ArgumentResolver argumentResolver) 構成されたクラスローダーと指定された引数リゾルバーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装をロードしてインスタンス化します。返されたファクトリは
AnnotationAwareOrderComparator
でソートされます。Spring Framework 5.3 の時点で、特定のファクトリ型に対して重複する実装クラス名が検出された場合、重複する実装型の 1 つのインスタンスのみがインスタンス化されます。
- パラメーター:
factoryType
- ファクトリを表すインターフェースまたは抽象クラスargumentResolver
- コンストラクター引数をその型で解決するために使用される戦略- 例外:
IllegalArgumentExceptionSE
- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合- 導入:
- 6.0
load
public <T> ListSE<T> load(ClassSE<T> factoryType, @Nullable SpringFactoriesLoader.FailureHandler failureHandler) 指定されたエラーハンドラーによって提供されるカスタムエラー処理で構成されたクラスローダーを使用して、 "META-INF/spring.factories" から指定された型のファクトリ実装を読み込んでインスタンス化します。返されたファクトリは
AnnotationAwareOrderComparator
でソートされます。Spring Framework 5.3 の時点で、特定のファクトリ型に対して重複する実装クラス名が検出された場合、重複する実装型の 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
でソートされます。Spring Framework 5.3 の時点で、特定のファクトリ型に対して重複する実装クラス名が検出された場合、重複する実装型の 1 つのインスタンスのみがインスタンス化されます。
ロードできないファクトリ実装クラス、またはインスタンス化中にエラーが発生した場合、指定された失敗ハンドラーが呼び出されます。
- パラメーター:
factoryType
- ファクトリを表すインターフェースまたは抽象クラスargumentResolver
- コンストラクター引数をその型で解決するために使用される戦略failureHandler
- ファクトリのインスタンス化の失敗を処理するために使用される戦略- 導入:
- 6.0
instantiateFactory
@Nullable protected <T> 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
でソートされます。Spring Framework 5.3 の時点で、特定のファクトリ型に対して重複する実装クラス名が検出された場合、重複する実装型の 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" からロードします。Spring Framework 5.3 の時点で、特定の実装クラス名が特定のファクトリ型に対して複数回検出された場合、重複は無視されます。
- パラメーター:
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)
を推奨