org.springframework.beans.factory.serviceloader
Class AbstractServiceLoaderBasedFactoryBean

java.lang.Object
  extended by org.springframework.beans.factory.config.AbstractFactoryBean
      extended by org.springframework.beans.factory.serviceloader.AbstractServiceLoaderBasedFactoryBean
All Implemented Interfaces:
BeanClassLoaderAware, BeanFactoryAware, DisposableBean, FactoryBean, InitializingBean
Direct Known Subclasses:
ServiceFactoryBean, ServiceListFactoryBean, ServiceLoaderFactoryBean

public abstract class AbstractServiceLoaderBasedFactoryBean
extends AbstractFactoryBean
implements BeanClassLoaderAware

Abstract base class for FactoryBeans operating on the JDK 1.6 ServiceLoader facility.

Since:
2.5
Author:
Juergen Hoeller
See Also:
ServiceLoader

Field Summary
 
Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
logger
 
Constructor Summary
AbstractServiceLoaderBasedFactoryBean()
           
 
Method Summary
protected  Object createInstance()
          Delegates to getObjectToExpose(java.util.ServiceLoader).
protected abstract  Object getObjectToExpose(ServiceLoader serviceLoader)
          Determine the actual object to expose for the given ServiceLoader.
 Class getServiceType()
          Return the desired service type.
 void setBeanClassLoader(ClassLoader beanClassLoader)
          Callback that supplies the bean class loader to a bean instance.
 void setServiceType(Class serviceType)
          Specify the desired service type (typically the service's public API).
 
Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
afterPropertiesSet, destroy, destroyInstance, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, getObjectType, isSingleton, setBeanFactory, setSingleton
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractServiceLoaderBasedFactoryBean

public AbstractServiceLoaderBasedFactoryBean()
Method Detail

setServiceType

public void setServiceType(Class serviceType)
Specify the desired service type (typically the service's public API).


getServiceType

public Class getServiceType()
Return the desired service type.


setBeanClassLoader

public void setBeanClassLoader(ClassLoader beanClassLoader)
Description copied from interface: BeanClassLoaderAware
Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's InitializingBean.afterPropertiesSet() method or a custom init-method.

Specified by:
setBeanClassLoader in interface BeanClassLoaderAware
Overrides:
setBeanClassLoader in class AbstractFactoryBean
Parameters:
beanClassLoader - the owning class loader; may be null in which case a default ClassLoader must be used, for example the ClassLoader obtained via ClassUtils.getDefaultClassLoader()

createInstance

protected Object createInstance()
Delegates to getObjectToExpose(java.util.ServiceLoader).

Specified by:
createInstance in class AbstractFactoryBean
Returns:
the object to expose
See Also:
AbstractFactoryBean.getObject()

getObjectToExpose

protected abstract Object getObjectToExpose(ServiceLoader serviceLoader)
Determine the actual object to expose for the given ServiceLoader.

Left to concrete subclasses.

Parameters:
serviceLoader - the ServiceLoader for the configured service class
Returns:
the object to expose