org.springframework.web.portlet.context
Class XmlPortletApplicationContext

java.lang.Object
  extended by org.springframework.core.io.DefaultResourceLoader
      extended by org.springframework.context.support.AbstractApplicationContext
          extended by org.springframework.context.support.AbstractRefreshableApplicationContext
              extended by org.springframework.context.support.AbstractRefreshableConfigApplicationContext
                  extended by org.springframework.web.portlet.context.AbstractRefreshablePortletApplicationContext
                      extended by org.springframework.web.portlet.context.XmlPortletApplicationContext
All Implemented Interfaces:
BeanFactory, BeanNameAware, DisposableBean, HierarchicalBeanFactory, InitializingBean, ListableBeanFactory, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, ResourceLoader, ResourcePatternResolver, WebApplicationContext, ConfigurablePortletApplicationContext

public class XmlPortletApplicationContext
extends AbstractRefreshablePortletApplicationContext

Portlet-based WebApplicationContext implementation which takes its configuration from XML documents, understood by an XmlBeanDefinitionReader. This is essentially the equivalent of AbstractXmlApplicationContext for a portlet environment.

By default, the configuration will be taken from "/WEB-INF/applicationContext.xml" for the root context, and "/WEB-INF/test-portlet.xml" for a context with the namespace "test-portlet" (like for a DispatcherPortlet instance with the portlet-name "test").

The config location defaults can be overridden via the "contextConfigLocation" portlet init-param of FrameworkPortlet. Config locations can either denote concrete files like "/WEB-INF/context.xml" or Ant-style patterns like "/WEB-INF/*-context.xml" (see PathMatcher javadoc for pattern details).

Note: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra XML file.

For a Portlet-based context that reads in a different bean definition format, create an analogous subclass of AbstractRefreshablePortletApplicationContext. Such a context implementation can be specified as "contextClass" init-param for a FrameworkPortlet instance.

Since:
2.0
Author:
Juergen Hoeller, John A. Lewis
See Also:
AbstractRefreshablePortletApplicationContext.setNamespace(java.lang.String), AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String[]), XmlBeanDefinitionReader, FrameworkPortlet.initPortletApplicationContext()

Field Summary
static java.lang.String DEFAULT_CONFIG_LOCATION
          Default config location for the root context
static java.lang.String DEFAULT_CONFIG_LOCATION_PREFIX
          Default prefix for building a config location for a namespace
static java.lang.String DEFAULT_CONFIG_LOCATION_SUFFIX
          Default suffix for building a config location for a namespace
 
Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
 
Fields inherited from interface org.springframework.web.portlet.context.ConfigurablePortletApplicationContext
PORTLET_CONFIG_BEAN_NAME, PORTLET_CONTEXT_BEAN_NAME
 
Fields inherited from interface org.springframework.web.context.WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
 
Fields inherited from interface org.springframework.context.ConfigurableApplicationContext
CONFIG_LOCATION_DELIMITERS, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
 
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
 
Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
 
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
 
Constructor Summary
XmlPortletApplicationContext()
           
 
Method Summary
protected  java.lang.String[] getDefaultConfigLocations()
          The default location for the root context is "/WEB-INF/applicationContext.xml", and "/WEB-INF/test-portlet.xml" for a context with the namespace "test-portlet" (like for a DispatcherPortlet instance with the portlet-name "test").
protected  void initBeanDefinitionReader(XmlBeanDefinitionReader beanDefinitionReader)
          Initialize the bean definition reader used for loading the bean definitions of this context.
protected  void loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
          Loads the bean definitions via an XmlBeanDefinitionReader.
protected  void loadBeanDefinitions(XmlBeanDefinitionReader reader)
          Load the bean definitions with the given XmlBeanDefinitionReader.
 
Methods inherited from class org.springframework.web.portlet.context.AbstractRefreshablePortletApplicationContext
getConfigLocations, getNamespace, getPortletConfig, getPortletContext, getResourceByPath, getResourcePatternResolver, getServletContext, postProcessBeanFactory, setNamespace, setParent, setPortletConfig, setPortletContext
 
Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
 
Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
 
Methods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addListener, cancelRefresh, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getBeansWithAnnotation, getDisplayName, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, initApplicationEventMulticaster, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, prepareBeanFactory, prepareRefresh, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, start, stop, toString
 
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
getClassLoader, getResource, setClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.web.portlet.context.ConfigurablePortletApplicationContext
setConfigLocation, setConfigLocations
 
Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, close, getBeanFactory, isActive, refresh, registerShutdownHook
 
Methods inherited from interface org.springframework.context.ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
 
Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getBeansWithAnnotation
 
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, getType, isPrototype, isSingleton, isTypeMatch
 
Methods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessage
 
Methods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent
 
Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
getResources
 
Methods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResource
 
Methods inherited from interface org.springframework.context.Lifecycle
isRunning, start, stop
 

Field Detail

DEFAULT_CONFIG_LOCATION

public static final java.lang.String DEFAULT_CONFIG_LOCATION
Default config location for the root context

See Also:
Constant Field Values

DEFAULT_CONFIG_LOCATION_PREFIX

public static final java.lang.String DEFAULT_CONFIG_LOCATION_PREFIX
Default prefix for building a config location for a namespace

See Also:
Constant Field Values

DEFAULT_CONFIG_LOCATION_SUFFIX

public static final java.lang.String DEFAULT_CONFIG_LOCATION_SUFFIX
Default suffix for building a config location for a namespace

See Also:
Constant Field Values
Constructor Detail

XmlPortletApplicationContext

public XmlPortletApplicationContext()
Method Detail

loadBeanDefinitions

protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
                            throws java.io.IOException
Loads the bean definitions via an XmlBeanDefinitionReader.

Specified by:
loadBeanDefinitions in class AbstractRefreshableApplicationContext
Parameters:
beanFactory - the bean factory to load bean definitions into
Throws:
java.io.IOException - if loading of bean definition files failed
See Also:
XmlBeanDefinitionReader, initBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader), loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)

initBeanDefinitionReader

protected void initBeanDefinitionReader(XmlBeanDefinitionReader beanDefinitionReader)
Initialize the bean definition reader used for loading the bean definitions of this context. Default implementation is empty.

Can be overridden in subclasses, e.g. for turning off XML validation or using a different XmlBeanDefinitionParser implementation.

Parameters:
beanDefinitionReader - the bean definition reader used by this context
See Also:
XmlBeanDefinitionReader.setValidationMode(int), XmlBeanDefinitionReader.setDocumentReaderClass(java.lang.Class)

loadBeanDefinitions

protected void loadBeanDefinitions(XmlBeanDefinitionReader reader)
                            throws BeansException,
                                   java.io.IOException
Load the bean definitions with the given XmlBeanDefinitionReader.

The lifecycle of the bean factory is handled by the refreshBeanFactory method; therefore this method is just supposed to load and/or register bean definitions.

Delegates to a ResourcePatternResolver for resolving location patterns into Resource instances.

Throws:
BeansException - in case of bean registration errors
java.io.IOException - if the required XML document isn't found
See Also:
AbstractRefreshableApplicationContext.refreshBeanFactory(), AbstractRefreshablePortletApplicationContext.getConfigLocations(), AbstractApplicationContext.getResources(java.lang.String), AbstractRefreshablePortletApplicationContext.getResourcePatternResolver()

getDefaultConfigLocations

protected java.lang.String[] getDefaultConfigLocations()
The default location for the root context is "/WEB-INF/applicationContext.xml", and "/WEB-INF/test-portlet.xml" for a context with the namespace "test-portlet" (like for a DispatcherPortlet instance with the portlet-name "test").

Overrides:
getDefaultConfigLocations in class AbstractRefreshableConfigApplicationContext
Returns:
an array of default config locations, if any
See Also:
AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String[])