public abstract class SpringFactoriesLoader
extends java.lang.Object
The SpringFactoriesLoader
loads and instantiates factories of a given type
from "META-INF/spring.factories" files. The file should be in Properties
format,
where the key is the fully qualified interface or abstract class name, and the value
is a comma-separated list of implementation class names. For instance:
example.MyService=example.MyServiceImpl1,example.MyServiceImpl2where
MyService
is the name of the interface, and MyServiceImpl1
and
MyServiceImpl2
are the two implementations.Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
FACTORIES_RESOURCE_LOCATION
The location to look for the factories.
|
private static Log |
logger |
Constructor and Description |
---|
SpringFactoriesLoader() |
Modifier and Type | Method and Description |
---|---|
private static <T> T |
instantiateFactory(java.lang.String instanceClassName,
java.lang.Class<T> factoryClass,
java.lang.ClassLoader classLoader) |
static <T> java.util.List<T> |
loadFactories(java.lang.Class<T> factoryClass,
java.lang.ClassLoader classLoader)
Load the factory implementations of the given type from the default location,
using the given class loader.
|
static java.util.List<java.lang.String> |
loadFactoryNames(java.lang.Class<?> factoryClass,
java.lang.ClassLoader classLoader) |
private static final java.lang.String FACTORIES_RESOURCE_LOCATION
private static final Log logger
public static <T> java.util.List<T> loadFactories(java.lang.Class<T> factoryClass, java.lang.ClassLoader classLoader)
The returned factories are ordered in accordance with the OrderComparator
.
factoryClass
- the interface or abstract class representing the factoryclassLoader
- the ClassLoader to use for loading (can be null
to use the default)public static java.util.List<java.lang.String> loadFactoryNames(java.lang.Class<?> factoryClass, java.lang.ClassLoader classLoader)
private static <T> T instantiateFactory(java.lang.String instanceClassName, java.lang.Class<T> factoryClass, java.lang.ClassLoader classLoader)