Abstract implementation of the 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
BeanFactoryPostProcessors ,
BeanPostProcessors
and ApplicationListeners
which are defined as beans in the context.
A MessageSource may also be supplied
as a bean in the context, with the name "messageSource"; else, message
resolution is delegated to the parent context. Furthermore, a multicaster
for application events can be supplied as "applicationEventMulticaster" bean
of type ApplicationEventMulticaster
in the context; else, a default multicaster of type
SimpleApplicationEventMulticaster will be used.
Implements resource loading through extending
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 getResourceByPath(String)
method is overwritten in a subclass.
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 BeanFactoryPostProcessors , BeanPostProcessors and ApplicationListeners which are defined as beans in the context.
A MessageSource may also be supplied as a bean in the context, with the name "messageSource"; else, message resolution is delegated to the parent context. Furthermore, a multicaster for application events can be supplied as "applicationEventMulticaster" bean of type ApplicationEventMulticaster in the context; else, a default multicaster of type SimpleApplicationEventMulticaster will be used.
Implements resource loading through extending 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 getResourceByPath(String) method is overwritten in a subclass.