Abstract implementation of the {@link org.springframework.context.ApplicationContext}interface. Doesn't mandate the type of storage used for configuration; simply implements common context functionality. Uses the Template Method design pattern, requiring concrete subclasses to implement abstract methods.
In contrast to a plain BeanFactory, an ApplicationContext is supposed to detect special beans defined in its internal bean factory: Therefore, this class automatically registers {@link org.springframework.beans.factory.config.BeanFactoryPostProcessor BeanFactoryPostProcessors}, {@link org.springframework.beans.factory.config.BeanPostProcessor BeanPostProcessors}and {@link org.springframework.context.ApplicationListener ApplicationListeners}which are defined as beans in the context.
A {@link org.springframework.context.MessageSource} may also be suppliedas a bean in the context, with the name "messageSource"; otherwise, message resolution is delegated to the parent context. Furthermore, a multicaster for application events can be supplied as "applicationEventMulticaster" bean of type {@link org.springframework.context.event.ApplicationEventMulticaster}in the context; otherwise, a default multicaster of type {@link org.springframework.context.event.SimpleApplicationEventMulticaster} will be used.
Implements resource loading through extending {@link org.springframework.core.io.DefaultResourceLoader}. Consequently treats non-URL resource paths as class path resources (supporting full class path resource names that include the package path, e.g. "mypackage/myresource.dat"), unless the {@link #getResourceByPath}method is overwritten in a subclass.
@author Rod Johnson
@author Juergen Hoeller
@author Mark Fisher
@since January 21, 2001
@see #refreshBeanFactory
@see #getBeanFactory
@see org.springframework.beans.factory.config.BeanFactoryPostProcessor
@see org.springframework.beans.factory.config.BeanPostProcessor
@see org.springframework.context.event.ApplicationEventMulticaster
@see org.springframework.context.ApplicationListener
@see org.springframework.context.MessageSource