public final class SpringFactoriesLoader extends ObjectSE
SpringFactoriesLoader
は、クラスパスの複数の JAR ファイルに存在する可能性のある「META-INF/spring.factories」ファイルから、指定されたタイプのファクトリをロードしてインスタンス化します。spring.factories
ファイルは Properties
SE 形式である必要があります。ここで、キーはインターフェースまたは抽象クラスの完全修飾名であり、値は実装クラス名のコンマ区切りのリストです。例:
example.MyService=example.MyServiceImpl1,example.MyServiceImpl2ここで、
example.MyService
はインターフェースの名前であり、MyServiceImpl1
と MyServiceImpl2
は 2 つの実装です。修飾子と型 | フィールドと説明 |
---|---|
static StringSE | FACTORIES_RESOURCE_LOCATION ファクトリを探す場所です。 |
修飾子と型 | メソッドと説明 |
---|---|
static <T> ListSE<T> | loadFactories(ClassSE<T> factoryType, ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定されたタイプのファクトリ実装を「META-INF/spring.factories」からロードしてインスタンス化します。 |
static ListSE<StringSE> | loadFactoryNames(ClassSE<?> factoryType, ClassLoaderSE classLoader) 指定されたクラスローダーを使用して、指定されたタイプのファクトリ実装の完全修飾クラス名を「META-INF/spring.factories」からロードします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static <T> ListSE<T> loadFactories(ClassSE<T> factoryType, @Nullable ClassLoaderSE classLoader)
返されたファクトリは AnnotationAwareOrderComparator
でソートされます。
カスタムのインスタンス化戦略が必要な場合は、loadFactoryNames(java.lang.Class<?>, java.lang.ClassLoader)
を使用して、登録されているすべてのファクトリ名を取得します。
factoryType
- ファクトリを表すインターフェースまたは抽象クラス classLoader
- ロードに使用する ClassLoader (デフォルトを使用するために null
にすることができます) IllegalArgumentExceptionSE
- ファクトリ実装クラスをロードできない場合、またはファクトリのインスタンス化中にエラーが発生した場合 loadFactoryNames(java.lang.Class<?>, java.lang.ClassLoader)
public static ListSE<StringSE> loadFactoryNames(ClassSE<?> factoryType, @Nullable ClassLoaderSE classLoader)
factoryType
- ファクトリを表すインターフェースまたは抽象クラス classLoader
- リソースのロードに使用する ClassLoader。デフォルトを使用する null
にすることができます IllegalArgumentExceptionSE
- ファクトリ名のロード中にエラーが発生した場合 loadFactories(java.lang.Class<T>, java.lang.ClassLoader)