|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.core.io.DefaultResourceLoader org.springframework.context.support.AbstractApplicationContext
Partial implementation of ApplicationContext. Doesn't mandate the type of storage used for configuration, but implements common functionality. Uses the Template Method design pattern, requiring concrete subclasses to implement abstract methods.
In contrast to a plain bean factory, an ApplicationContext is supposed to detect special beans defined in its bean factory: Therefore, this class automatically registers BeanFactoryPostProcessors, BeanPostProcessors and ApplicationListeners that are defined as beans in the context.
A MessageSource may be also supplied as a bean in the context, with the name "messageSource". Else, message resolution is delegated to the parent context.
Implements resource loading through extending DefaultResourceLoader. Therefore, treats resource paths as class path resources. Only supports full classpath resource names that include the package path, like "mypackage/myresource.dat".
refreshBeanFactory()
,
getBeanFactory()
,
MESSAGE_SOURCE_BEAN_NAME
Field Summary | |
protected org.apache.commons.logging.Log |
logger
Log4j logger used by this class. |
static java.lang.String |
MESSAGE_SOURCE_BEAN_NAME
Name of the MessageSource bean in the factory. |
Fields inherited from interface org.springframework.core.io.ResourceLoader |
CLASSPATH_URL_PREFIX |
Constructor Summary | |
AbstractApplicationContext()
Create a new AbstractApplicationContext with no parent. |
|
AbstractApplicationContext(ApplicationContext parent)
Create a new AbstractApplicationContext with the given parent context. |
Method Summary | |
void |
addBeanFactoryPostProcessor(BeanFactoryPostProcessor beanFactoryPostProcessor)
Add a new BeanFactoryPostProcessor that will get applied to the internal bean factory of this application context on refresh, before any of the bean definitions get evaluated. |
protected void |
addListener(ApplicationListener listener)
Subclasses can invoke this method to register a listener. |
void |
close()
Destroy the singletons in the bean factory of this application context. |
boolean |
containsBean(java.lang.String name)
Does this bean factory contain a bean with the given name? |
boolean |
containsBeanDefinition(java.lang.String name)
Check if this bean factory contains a bean definition with the given name. |
java.lang.String[] |
getAliases(java.lang.String name)
Return the aliases for the given bean name, if defined. |
java.lang.Object |
getBean(java.lang.String name)
Return an instance (possibly shared or independent) of the given bean name. |
java.lang.Object |
getBean(java.lang.String name,
java.lang.Class requiredType)
Return an instance (possibly shared or independent) of the given bean name. |
int |
getBeanDefinitionCount()
Return the number of beans defined in the factory. |
java.lang.String[] |
getBeanDefinitionNames()
Return the names of all beans defined in this factory. |
java.lang.String[] |
getBeanDefinitionNames(java.lang.Class type)
Return the names of beans matching the given type (including subclasses), judging from the bean definitions. |
abstract ConfigurableListableBeanFactory |
getBeanFactory()
Subclasses must return their internal bean factory here. |
java.util.List |
getBeanFactoryPostProcessors()
Return the list of BeanPostProcessors that will get applied to beans created with this factory. |
java.util.Map |
getBeansOfType(java.lang.Class type,
boolean includePrototypes,
boolean includeFactoryBeans)
Return the bean instances that match the given object type (including subclasses), judging from either bean definitions or the value of getObjectType() in the case of FactoryBeans. |
java.lang.String |
getDisplayName()
Return a friendly name for context |
java.lang.String |
getMessage(MessageSourceResolvable resolvable,
java.util.Locale locale)
Try to resolve the message using all the attributes contained within the MessageSourceResolvable argument that was passed in. |
java.lang.String |
getMessage(java.lang.String code,
java.lang.Object[] args,
java.util.Locale locale)
Try to resolve the message. |
java.lang.String |
getMessage(java.lang.String code,
java.lang.Object[] args,
java.lang.String defaultMessage,
java.util.Locale locale)
Try to resolve the message. |
ApplicationContext |
getParent()
Return the parent context, or null if there is no parent, and this is the root of the context hierarchy. |
BeanFactory |
getParentBeanFactory()
Return the parent bean factory, or null if there is none. |
long |
getStartupDate()
Return the timestamp when this context was first loaded |
boolean |
isSingleton(java.lang.String name)
Is this bean a singleton? That is, will getBean() always return the same object? |
protected void |
onRefresh()
Template method which can be overridden to add context-specific refresh work. |
protected void |
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Modify the application context's internal bean factory after its standard initialization. |
void |
publishEvent(ApplicationEvent event)
Publish the given event to all listeners. |
void |
refresh()
Load or reload configuration. |
protected abstract void |
refreshBeanFactory()
Subclasses must implement this method to perform the actual configuration load. |
protected void |
setDisplayName(java.lang.String displayName)
To avoid endless constructor chaining, only concrete classes take this in their constructor, and then invoke this method |
void |
setParent(ApplicationContext parent)
Set the parent of this application context. |
java.lang.String |
toString()
Return information about this context. |
Methods inherited from class org.springframework.core.io.DefaultResourceLoader |
getResource, getResourceByPath |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.springframework.core.io.ResourceLoader |
getResource |
Field Detail |
public static final java.lang.String MESSAGE_SOURCE_BEAN_NAME
MessageSource
,
Constant Field Valuesprotected final org.apache.commons.logging.Log logger
Constructor Detail |
public AbstractApplicationContext()
public AbstractApplicationContext(ApplicationContext parent)
parent
- parent contextMethod Detail |
public ApplicationContext getParent()
getParent
in interface ApplicationContext
protected void setDisplayName(java.lang.String displayName)
public java.lang.String getDisplayName()
getDisplayName
in interface ApplicationContext
public long getStartupDate()
getStartupDate
in interface ApplicationContext
public void publishEvent(ApplicationEvent event)
Note: Listeners get initialized after the message source, to be able to access it within listener implementations. Thus, message source implementation cannot publish events.
publishEvent
in interface ApplicationContext
event
- event to publish. The event may be application-specific,
or a standard framework event.RequestHandledEvent
public void setParent(ApplicationContext parent)
ConfigurableApplicationContext
Note that the parent shouldn't be changed: It should only be set outside a constructor if it isn't available when an object of this class is created, for example in case of WebApplicationContext setup.
setParent
in interface ConfigurableApplicationContext
parent
- the parent contextConfigurableWebApplicationContext
public void addBeanFactoryPostProcessor(BeanFactoryPostProcessor beanFactoryPostProcessor)
ConfigurableApplicationContext
addBeanFactoryPostProcessor
in interface ConfigurableApplicationContext
beanFactoryPostProcessor
- the factory processor to registerpublic java.util.List getBeanFactoryPostProcessors()
public void refresh() throws BeansException
refresh
in interface ConfigurableApplicationContext
ApplicationContextException
- if the configuration
was invalid or couldn't be found, or if configuration has already been loaded and
reloading is forbidden
BeansException
- if the bean factory could not be initializedprotected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
beanFactory
- the bean factory used by the application context
BeansException
- in case of errorsprotected void onRefresh() throws BeansException
BeansException
- in case of errors during refreshrefresh()
protected void addListener(ApplicationListener listener)
listener
- the listener to registerpublic void close()
close
in interface ConfigurableApplicationContext
public java.lang.Object getBean(java.lang.String name) throws BeansException
BeanFactory
Note that callers should retain references to returned objects. There is no guarantee that this method will be implemented to be efficient. For example, it may be synchronized, or may need to run an RDBMS query.
Will ask the parent factory if the bean cannot be found in this factory instance.
getBean
in interface BeanFactory
name
- name of the bean to return
BeansException
- if the bean could not be createdpublic java.lang.Object getBean(java.lang.String name, java.lang.Class requiredType) throws BeansException
BeanFactory
Note that callers should retain references to returned objects. There is no guarantee that this method will be implemented to be efficient. For example, it may be synchronized, or may need to run an RDBMS query.
Will ask the parent factory if the bean cannot be found in this factory instance.
getBean
in interface BeanFactory
name
- name of the bean to returnrequiredType
- type the bean may match. Can be an interface or superclass
of the actual class. For example, if the value is Object.class, this method will
succeed whatever the class of the returned instance.
BeansException
- if the bean could not be createdpublic boolean containsBean(java.lang.String name)
BeanFactory
Will ask the parent factory if the bean cannot be found in this factory instance.
containsBean
in interface BeanFactory
name
- name of the bean to query
public boolean isSingleton(java.lang.String name) throws NoSuchBeanDefinitionException
BeanFactory
Will ask the parent factory if the bean cannot be found in this factory instance.
isSingleton
in interface BeanFactory
name
- name of the bean to query
NoSuchBeanDefinitionException
- if there is no bean with the given namepublic java.lang.String[] getAliases(java.lang.String name) throws NoSuchBeanDefinitionException
BeanFactory
Will ask the parent factory if the bean cannot be found in this factory instance.
getAliases
in interface BeanFactory
name
- the bean name to check for aliases
NoSuchBeanDefinitionException
- if there's no such bean definitionpublic int getBeanDefinitionCount()
ListableBeanFactory
Note: Ignores any singleton beans that have been registered by other means than bean definitions.
getBeanDefinitionCount
in interface ListableBeanFactory
public java.lang.String[] getBeanDefinitionNames()
ListableBeanFactory
Note: Ignores any singleton beans that have been registered by other means than bean definitions.
getBeanDefinitionNames
in interface ListableBeanFactory
public java.lang.String[] getBeanDefinitionNames(java.lang.Class type)
ListableBeanFactory
Note: Ignores any singleton beans that have been registered by other means than bean definitions.
getBeanDefinitionNames
in interface ListableBeanFactory
type
- class or interface to match, or null for all bean names
public boolean containsBeanDefinition(java.lang.String name)
ListableBeanFactory
Note: Ignores any singleton beans that have been registered by other means than bean definitions.
containsBeanDefinition
in interface ListableBeanFactory
name
- the name of the bean to look for
public java.util.Map getBeansOfType(java.lang.Class type, boolean includePrototypes, boolean includeFactoryBeans) throws BeansException
ListableBeanFactory
If FactoryBean's getObjectType() returns null and the bean is a singleton, the type of the actually created objects should be evaluated. Prototypes without explicit object type specification should be ignored.
Note: Ignores any singleton beans that have been registered by other means than bean definitions.
getBeansOfType
in interface ListableBeanFactory
type
- class or interface to matchincludePrototypes
- whether to include prototype beans too
or just singletons (also applies to FactoryBeans)includeFactoryBeans
- whether to include FactoryBeans too
or just normal beans
BeansException
- if the beans could not be createdpublic BeanFactory getParentBeanFactory()
HierarchicalBeanFactory
getParentBeanFactory
in interface HierarchicalBeanFactory
public java.lang.String getMessage(java.lang.String code, java.lang.Object[] args, java.lang.String defaultMessage, java.util.Locale locale)
MessageSource
getMessage
in interface MessageSource
code
- code to lookup up, such as 'calculator.noRateSet'. Users of
this class are encouraged to base message names on the relevant fully
qualified class name, thus avoiding conflict and ensuring maximum clarity.args
- array of arguments that will be filled in for params within
the message (params look like "{0}", "{1,date}", "{2,time}" within a message),
or null if none.locale
- the Locale in which to do lookupdefaultMessage
- String to return if the lookup fails
public java.lang.String getMessage(java.lang.String code, java.lang.Object[] args, java.util.Locale locale) throws NoSuchMessageException
MessageSource
getMessage
in interface MessageSource
code
- code to lookup up, such as 'calculator.noRateSet'args
- Array of arguments that will be filled in for params within
the message (params look like "{0}", "{1,date}", "{2,time}" within a message),
or null if none.locale
- Locale in which to do lookup
NoSuchMessageException
- if not found in any localepublic java.lang.String getMessage(MessageSourceResolvable resolvable, java.util.Locale locale) throws NoSuchMessageException
MessageSource
MessageSourceResolvable
argument that was passed in.
NOTE: We must throw a NoSuchMessageException
on this method
since at the time of calling this method we aren't able to determine if the
defaultMessage
property of the resolvable is null or not.
getMessage
in interface MessageSource
resolvable
- value object storing attributes required to properly resolve a messagelocale
- Locale to be used as the "driver" to figuring out what message to return
NoSuchMessageException
- if not found in any localepublic java.lang.String toString()
protected abstract void refreshBeanFactory() throws BeansException
BeansException
refresh()
public abstract ConfigurableListableBeanFactory getBeanFactory()
getBeanFactory
in interface ConfigurableApplicationContext
ConfigurableApplicationContext.refresh()
,
ConfigurableApplicationContext.addBeanFactoryPostProcessor(org.springframework.beans.factory.config.BeanFactoryPostProcessor)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |