Abstract base class for {@link org.springframework.beans.factory.BeanFactory}implementations, providing the full capabilities of the {@link org.springframework.beans.factory.config.ConfigurableBeanFactory} SPI.Does
not assume a listable bean factory: can therefore also be used as base class for bean factory implementations which obtain bean definitions from some backend resource (where bean definition access is an expensive operation).
This class provides a singleton cache (through its base class {@link org.springframework.beans.factory.support.DefaultSingletonBeanRegistry}, singleton/prototype determination, {@link org.springframework.beans.factory.FactoryBean}handling, aliases, bean definition merging for child bean definitions, and bean destruction ( {@link org.springframework.beans.factory.DisposableBean}interface, custom destroy methods). Furthermore, it can manage a bean factory hierarchy (delegating to the parent in case of an unknown bean), through implementing the {@link org.springframework.beans.factory.HierarchicalBeanFactory} interface.
The main template methods to be implemented by subclasses are {@link #getBeanDefinition} and {@link #createBean}, retrieving a bean definition for a given bean name and creating a bean instance for a given bean definition, respectively. Default implementations of those operations can be found in {@link DefaultListableBeanFactory} and {@link AbstractAutowireCapableBeanFactory}.
@author Rod Johnson
@author Juergen Hoeller
@since 15 April 2001
@see #getBeanDefinition
@see #createBean
@see AbstractAutowireCapableBeanFactory#createBean
@see DefaultListableBeanFactory#getBeanDefinition