## org.springframework.web.portlet.context
Class AbstractRefreshablePortletApplicationContext

    java.lang.Object
      org.springframework.core.io.DefaultResourceLoader
          org.springframework.context.support.AbstractApplicationContext
              org.springframework.context.support.AbstractRefreshableApplicationContext
                  org.springframework.context.support.AbstractRefreshableConfigApplicationContext
                      org.springframework.web.portlet.context.AbstractRefreshablePortletApplicationContext

All Implemented Interfaces:
  Aware, BeanFactory, BeanNameAware, DisposableBean, HierarchicalBeanFactory, InitializingBean, ListableBeanFactory, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, EnvironmentCapable, ResourceLoader, ResourcePatternResolver, WebApplicationContext, ConfigurablePortletApplicationContext

Direct Known Subclasses:
  XmlPortletApplicationContext

    public abstract class AbstractRefreshablePortletApplicationContext

extends AbstractRefreshableConfigApplicationContext
implements WebApplicationContext, ConfigurablePortletApplicationContext

`AbstractRefreshableApplicationContext` subclass which implements the `ConfigurablePortletApplicationContext` interface for portlet environments. Provides a "configLocations" property, to be populated through the ConfigurablePortletApplicationContext interface on portlet application startup.

This class is as easy to subclass as AbstractRefreshableApplicationContext: All you need to implements is the `AbstractRefreshableApplicationContext.loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)` method; see the superclass javadoc for details. Note that implementations are supposed to load bean definitions from the files specified by the locations returned by the `getConfigLocations()` method.

Interprets resource paths as servlet context resources, i.e. as paths beneath the web application root. Absolute paths, e.g. for files outside the web app root, can be accessed via "file:" URLs, as implemented by `DefaultResourceLoader`.

This is the portlet context to be subclassed for a different bean definition format. Such a context implementation can be specified as "contextClass" init-param for FrameworkPortlet, replacing the default `XmlPortletApplicationContext`. It will then automatically receive the "contextConfigLocation" init-param.

Note that Portlet-based context implementations are generally supposed to configure themselves based on the configuration received through the `ConfigurablePortletApplicationContext` interface. In contrast, a standalone application context might allow for configuration in custom startup code (for example, `GenericApplicationContext`).

Since:
  2.0
Author:
  Juergen Hoeller, John A. Lewis
See Also:
  `AbstractRefreshableApplicationContext.loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)`, `ConfigurablePortletApplicationContext.setConfigLocations(java.lang.String[])`, `XmlPortletApplicationContext`

Field Summary

Fields inherited from class org.springframework.context.support.AbstractApplicationContext
`APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME`

Fields inherited from interface org.springframework.web.portlet.context.ConfigurablePortletApplicationContext
`APPLICATION_CONTEXT_ID_PREFIX, 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, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, 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
`AbstractRefreshablePortletApplicationContext()`

Method Summary
`protected ConfigurableEnvironment` `createEnvironment()` Create and return a new `StandardPortletEnvironment`.
`protected void` `customizeBeanFactory(DefaultListableBeanFactory beanFactory)` Customize the internal bean factory used by this context.
`String[]` `getConfigLocations()` Return an array of resource locations, referring to the XML bean definition files that this context should be built with.
`String` `getNamespace()` Return the namespace for this web application context, if any.
`PortletConfig` `getPortletConfig()` Return the PortletConfig for this portlet application context, if any.
`PortletContext` `getPortletContext()` Return the standard Portlet API PortletContext for this application.
`protected Resource` `getResourceByPath(String path)` This implementation supports file paths beneath the root of the PortletContext.
`protected ResourcePatternResolver` `getResourcePatternResolver()` This implementation supports pattern matching in unexpanded WARs too.
`ServletContext` `getServletContext()` Return the standard Servlet API ServletContext for this application.
`protected void` `postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)` Register request/session scopes, a `PortletContextAwareProcessor`, etc.
`void` `setNamespace(String namespace)` Set the namespace for this portlet application context, to be used for building a default context config location.
`void` `setParent(ApplicationContext parent)` Set the parent of this application context.
`void` `setPortletConfig(PortletConfig portletConfig)` Set the PortletConfig for this portlet application context.
`void` `setPortletContext(PortletContext portletContext)` Set the PortletContext for this portlet application context.

Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
`afterPropertiesSet, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId`

Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
`cancelRefresh, closeBeanFactory, createBeanFactory, getBeanFactory, hasBeanFactory, loadBeanDefinitions, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences`

Methods inherited from class org.springframework.context.support.AbstractApplicationContext

`addApplicationListener, addBeanFactoryPostProcessor, addListener, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, initPropertySources, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, prepareBeanFactory, prepareRefresh, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, setEnvironment, 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, getEnvironment, isActive, refresh, registerShutdownHook, setEnvironment, setId`

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`

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, 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`

Constructor Detail

### AbstractRefreshablePortletApplicationContext

    public AbstractRefreshablePortletApplicationContext()

Method Detail

### setParent

    public void setParent(ApplicationContext parent)

  Set the parent of this application context.

  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.

  The parent environment is merged with this (child) application context environment if the parent is non-`null` and its environment is an instance of `ConfigurableEnvironment`.

  The parent environment is delegated to this (child) context if the parent is a `ConfigurableApplicationContext` implementation.

  The parent servlet context is delegated to this (child) context if the parent is a `WebApplicationContext` implementation.

  Specified by:
    `setParent` in interface `ConfigurableApplicationContext`
  Overrides:
    `setParent` in class `AbstractApplicationContext`
  Parameters:
    `parent` - the parent context
  See Also:
    `ConfigurableEnvironment.merge(ConfigurableEnvironment)`

### getServletContext

    public ServletContext getServletContext()

  Description copied from interface: `WebApplicationContext`
  Return the standard Servlet API ServletContext for this application.

  Also available for a Portlet application, in addition to the PortletContext.

  Specified by:
    `getServletContext` in interface `WebApplicationContext`

### setPortletContext

    public void setPortletContext(PortletContext portletContext)

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Set the PortletContext for this portlet application context.

  Does not cause an initialization of the context: refresh needs to be called after the setting of all configuration properties.

  Specified by:
    `setPortletContext` in interface `ConfigurablePortletApplicationContext`
  See Also:
    `ConfigurableApplicationContext.refresh()`

### getPortletContext

    public PortletContext getPortletContext()

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Return the standard Portlet API PortletContext for this application.

  Specified by:
    `getPortletContext` in interface `ConfigurablePortletApplicationContext`

### setPortletConfig

    public void setPortletConfig(PortletConfig portletConfig)

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Set the PortletConfig for this portlet application context.

  Specified by:
    `setPortletConfig` in interface `ConfigurablePortletApplicationContext`
  See Also:
    `ConfigurableApplicationContext.refresh()`

### getPortletConfig

    public PortletConfig getPortletConfig()

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Return the PortletConfig for this portlet application context, if any.

  Specified by:
    `getPortletConfig` in interface `ConfigurablePortletApplicationContext`

### setNamespace

    public void setNamespace(String namespace)

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Set the namespace for this portlet application context, to be used for building a default context config location.

  Specified by:
    `setNamespace` in interface `ConfigurablePortletApplicationContext`

### getNamespace

    public String getNamespace()

  Description copied from interface: `ConfigurablePortletApplicationContext`
  Return the namespace for this web application context, if any.

  Specified by:
    `getNamespace` in interface `ConfigurablePortletApplicationContext`

### getConfigLocations

    public String[] getConfigLocations()

  Description copied from class: `AbstractRefreshableConfigApplicationContext`
  Return an array of resource locations, referring to the XML bean definition files that this context should be built with. Can also include location patterns, which will get resolved via a ResourcePatternResolver.

  The default implementation returns `null`. Subclasses can override this to provide a set of resource locations to load bean definitions from.

  Specified by:
    `getConfigLocations` in interface `ConfigurablePortletApplicationContext`
  Overrides:
    `getConfigLocations` in class `AbstractRefreshableConfigApplicationContext`
  Returns:
    an array of resource locations, or `null` if none
  See Also:
    `AbstractApplicationContext.getResources(java.lang.String)`, `AbstractApplicationContext.getResourcePatternResolver()`

### postProcessBeanFactory

    protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)

  Register request/session scopes, a `PortletContextAwareProcessor`, etc.

  Overrides:
    `postProcessBeanFactory` in class `AbstractApplicationContext`
  Parameters:
    `beanFactory` - the bean factory used by the application context

### createEnvironment

    protected ConfigurableEnvironment createEnvironment()

  Create and return a new `StandardPortletEnvironment`.

  Overrides:
    `createEnvironment` in class `AbstractApplicationContext`

### getResourceByPath

    protected Resource getResourceByPath(String path)

  This implementation supports file paths beneath the root of the PortletContext.

  Overrides:
    `getResourceByPath` in class `DefaultResourceLoader`
  Parameters:
    `path` - the path to the resource
  Returns:
    the corresponding Resource handle
  See Also:
    `PortletContextResource`

### getResourcePatternResolver

    protected ResourcePatternResolver getResourcePatternResolver()

  This implementation supports pattern matching in unexpanded WARs too.

  Overrides:
    `getResourcePatternResolver` in class `AbstractApplicationContext`
  Returns:
    the ResourcePatternResolver for this context
  See Also:
    `PortletContextResourcePatternResolver`

### customizeBeanFactory

    protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory)

  Description copied from class: `AbstractRefreshableApplicationContext`
  Customize the internal bean factory used by this context. Called for each `AbstractApplicationContext.refresh()` attempt.

  The default implementation applies this context's "allowBeanDefinitionOverriding" and "allowCircularReferences" settings, if specified. Can be overridden in subclasses to customize any of `DefaultListableBeanFactory`'s settings.

  Overrides:
    `customizeBeanFactory` in class `AbstractRefreshableApplicationContext`
  Parameters:
    `beanFactory` - the newly created bean factory for this context
  See Also:
    `DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean)`, `AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean)`, `AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)`, `DefaultListableBeanFactory.setAllowEagerClassLoading(boolean)`