org.springframework.beans.factory.config
Interface ConfigurableListableBeanFactory

All Superinterfaces:
AutowireCapableBeanFactory, BeanFactory, ConfigurableBeanFactory, HierarchicalBeanFactory, ListableBeanFactory, SingletonBeanRegistry
All Known Implementing Classes:
DefaultListableBeanFactory, XmlBeanFactory

public interface ConfigurableListableBeanFactory
extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory

Configuration interface to be implemented by most listable bean factories. In addition to ConfigurableBeanFactory, it provides facilities to analyze and modify bean definitions, and to pre-instantiate singletons.

This subinterface of BeanFactory is not meant to be used in normal application code: Stick to BeanFactory or ListableBeanFactory for typical use cases. This interface is just meant to allow for framework-internal plug'n'play even when needing access to bean factory configuration methods.

Since:
03.11.2003
Author:
Juergen Hoeller
See Also:
AbstractApplicationContext.getBeanFactory()

Field Summary
 
Fields inherited from interface org.springframework.beans.factory.config.AutowireCapableBeanFactory
AUTOWIRE_AUTODETECT, AUTOWIRE_BY_NAME, AUTOWIRE_BY_TYPE, AUTOWIRE_CONSTRUCTOR, AUTOWIRE_NO
 
Fields inherited from interface org.springframework.beans.factory.config.ConfigurableBeanFactory
SCOPE_PROTOTYPE, SCOPE_SINGLETON
 
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
 
Method Summary
 void freezeConfiguration()
          Freeze all bean definitions, signalling that the registered bean definitions will not be modified or post-processed any further.
 BeanDefinition getBeanDefinition(String beanName)
          Return the registered BeanDefinition for the specified bean, allowing access to its property values and constructor argument value (which can be modified during bean factory post-processing).
 void ignoreDependencyInterface(Class ifc)
          Ignore the given dependency interface for autowiring.
 void ignoreDependencyType(Class type)
          Ignore the given dependency type for autowiring: for example, String.
 boolean isAutowireCandidate(String beanName, DependencyDescriptor descriptor)
          Determine whether the specified bean qualifies as an autowire candidate, to be injected into other beans which declare a dependency of matching type.
 boolean isConfigurationFrozen()
          Return whether this factory's bean definitions are frozen, i.e.
 void preInstantiateSingletons()
          Ensure that all non-lazy-init singletons are instantiated, also considering FactoryBeans.
 void registerResolvableDependency(Class dependencyType, Object autowiredValue)
          Register a special dependency type with corresponding autowired value.
 
Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
 
Methods inherited from interface org.springframework.beans.factory.config.AutowireCapableBeanFactory
applyBeanPostProcessorsAfterInitialization, applyBeanPostProcessorsBeforeInitialization, applyBeanPropertyValues, autowire, autowireBean, autowireBeanProperties, configureBean, createBean, createBean, initializeBean, resolveDependency, resolveDependency
 
Methods inherited from interface org.springframework.beans.factory.config.ConfigurableBeanFactory
addBeanPostProcessor, addEmbeddedValueResolver, addPropertyEditorRegistrar, copyConfigurationFrom, copyRegisteredEditorsTo, destroyBean, destroyScopedBean, destroySingletons, getAccessControlContext, getBeanClassLoader, getBeanExpressionResolver, getBeanPostProcessorCount, getConversionService, getDependenciesForBean, getDependentBeans, getMergedBeanDefinition, getRegisteredScope, getRegisteredScopeNames, getTempClassLoader, getTypeConverter, isCacheBeanMetadata, isCurrentlyInCreation, isFactoryBean, registerAlias, registerCustomEditor, registerDependentBean, registerScope, resolveAliases, resolveEmbeddedValue, setBeanClassLoader, setBeanExpressionResolver, setCacheBeanMetadata, setConversionService, setParentBeanFactory, setTempClassLoader, setTypeConverter
 
Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactory
 
Methods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch
 
Methods inherited from interface org.springframework.beans.factory.config.SingletonBeanRegistry
containsSingleton, getSingleton, getSingletonCount, getSingletonNames, registerSingleton
 

Method Detail

ignoreDependencyType

void ignoreDependencyType(Class type)
Ignore the given dependency type for autowiring: for example, String. Default is none.

Parameters:
type - the dependency type to ignore

ignoreDependencyInterface

void ignoreDependencyInterface(Class ifc)
Ignore the given dependency interface for autowiring.

This will typically be used by application contexts to register dependencies that are resolved in other ways, like BeanFactory through BeanFactoryAware or ApplicationContext through ApplicationContextAware.

By default, only the BeanFactoryAware interface is ignored. For further types to ignore, invoke this method for each type.

Parameters:
ifc - the dependency interface to ignore
See Also:
BeanFactoryAware, ApplicationContextAware

registerResolvableDependency

void registerResolvableDependency(Class dependencyType,
                                  Object autowiredValue)
Register a special dependency type with corresponding autowired value.

This is intended for factory/context references that are supposed to be autowirable but are not defined as beans in the factory: e.g. a dependency of type ApplicationContext resolved to the ApplicationContext instance that the bean is living in.

Note: There are no such default types registered in a plain BeanFactory, not even for the BeanFactory interface itself.

Parameters:
dependencyType - the dependency type to register. This will typically be a base interface such as BeanFactory, with extensions of it resolved as well if declared as an autowiring dependency (e.g. ListableBeanFactory), as long as the given value actually implements the extended interface.
autowiredValue - the corresponding autowired value. This may also be an implementation of the ObjectFactory interface, which allows for lazy resolution of the actual target value.

isAutowireCandidate

boolean isAutowireCandidate(String beanName,
                            DependencyDescriptor descriptor)
                            throws NoSuchBeanDefinitionException
Determine whether the specified bean qualifies as an autowire candidate, to be injected into other beans which declare a dependency of matching type.

This method checks ancestor factories as well.

Parameters:
beanName - the name of the bean to check
descriptor - the descriptor of the dependency to resolve
Returns:
whether the bean should be considered as autowire candidate
Throws:
NoSuchBeanDefinitionException - if there is no bean with the given name

getBeanDefinition

BeanDefinition getBeanDefinition(String beanName)
                                 throws NoSuchBeanDefinitionException
Return the registered BeanDefinition for the specified bean, allowing access to its property values and constructor argument value (which can be modified during bean factory post-processing).

A returned BeanDefinition object should not be a copy but the original definition object as registered in the factory. This means that it should be castable to a more specific implementation type, if necessary.

NOTE: This method does not consider ancestor factories. It is only meant for accessing local bean definitions of this factory.

Parameters:
beanName - the name of the bean
Returns:
the registered BeanDefinition
Throws:
NoSuchBeanDefinitionException - if there is no bean with the given name defined in this factory

freezeConfiguration

void freezeConfiguration()
Freeze all bean definitions, signalling that the registered bean definitions will not be modified or post-processed any further.

This allows the factory to aggressively cache bean definition metadata.


isConfigurationFrozen

boolean isConfigurationFrozen()
Return whether this factory's bean definitions are frozen, i.e. are not supposed to be modified or post-processed any further.

Returns:
true if the factory's configuration is considered frozen

preInstantiateSingletons

void preInstantiateSingletons()
                              throws BeansException
Ensure that all non-lazy-init singletons are instantiated, also considering FactoryBeans. Typically invoked at the end of factory setup, if desired.

Throws:
BeansException - if one of the singleton beans could not be created. Note: This may have left the factory with some beans already initialized! Call ConfigurableBeanFactory.destroySingletons() for full cleanup in this case.
See Also:
ConfigurableBeanFactory.destroySingletons()