Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.context.support
Class AbstractRefreshableApplicationContext

    java.lang.Object
      org.springframework.core.io.DefaultResourceLoader
          org.springframework.context.support.AbstractApplicationContext
              org.springframework.context.support.AbstractRefreshableApplicationContext

All Implemented Interfaces:
  BeanFactory, DisposableBean, HierarchicalBeanFactory, ListableBeanFactory, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, ResourceLoader, ResourcePatternResolver

Direct Known Subclasses:
  AbstractRefreshablePortletApplicationContext, AbstractRefreshableWebApplicationContext, AbstractXmlApplicationContext

    public abstract class AbstractRefreshableApplicationContext

extends AbstractApplicationContext

Base class for `ApplicationContext` implementations which are supposed to support multiple refreshs, creating a new internal bean factory instance every time. Typically (but not necessarily), such a context will be driven by a set of config locations to load bean definitions from.

The only method to be implemented by subclasses is `loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)`, which gets invoked on each refresh. A concrete implementation is supposed to load bean definitions into the given `DefaultListableBeanFactory`, typically delegating to one or more specific bean definition readers.

Note that there is a similar base class for WebApplicationContexts. `AbstractRefreshableWebApplicationContext` provides the same subclassing strategy, but additionally pre-implements all context functionality for web environments. There is also a pre-defined way to receive config locations for a web context.

Concrete standalone subclasses of this base class, reading in a specific bean definition format, are `ClassPathXmlApplicationContext` and `FileSystemXmlApplicationContext`, which both derive from the common `AbstractXmlApplicationContext` base class.

Since:
  1.1.3
Author:
  Juergen Hoeller
See Also:
  `loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)`, `DefaultListableBeanFactory`, `AbstractRefreshableWebApplicationContext`, `AbstractXmlApplicationContext`, `ClassPathXmlApplicationContext`, `FileSystemXmlApplicationContext`

Field Summary

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.beans.factory.BeanFactory
`FACTORY_BEAN_PREFIX`

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
`AbstractRefreshableApplicationContext()` Create a new AbstractRefreshableApplicationContext with no parent.
`AbstractRefreshableApplicationContext(ApplicationContext parent)` Create a new AbstractRefreshableApplicationContext with the given parent context.

Method Summary
`protected void` | `closeBeanFactory()` Subclasses must implement this method to release their internal bean factory.
`protected DefaultListableBeanFactory` | `createBeanFactory()` Create an internal bean factory for this context.
`protected void` | `customizeBeanFactory(DefaultListableBeanFactory beanFactory)` Customize the internal bean factory used by this context.
`ConfigurableListableBeanFactory` | `getBeanFactory()` Subclasses must return their internal bean factory here.
`protected abstract void` | `loadBeanDefinitions(DefaultListableBeanFactory beanFactory)` Load bean definitions into the given bean factory, typically through delegating to one or more bean definition readers.
`protected void` | `refreshBeanFactory()` Subclasses must implement this method to perform the actual configuration load.

Methods inherited from class org.springframework.context.support.AbstractApplicationContext
`addApplicationListener, addBeanFactoryPostProcessor, addListener, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getDisplayName, getInternalParentBeanFactory, getInternalParentMessageSource, getLifecycleBeans, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, getResources, getStartupDate, getType, initApplicationEventMulticaster, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, postProcessBeanFactory, prepareBeanFactory, prepareRefresh, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, setParent, start, stop, toString`

Methods inherited from class org.springframework.core.io.DefaultResourceLoader
`getClassLoader, getResource, getResourceByPath, setClassLoader`

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

Constructor Detail

### AbstractRefreshableApplicationContext

    public AbstractRefreshableApplicationContext()

  Create a new AbstractRefreshableApplicationContext with no parent.

### AbstractRefreshableApplicationContext

    public AbstractRefreshableApplicationContext(ApplicationContext parent)

  Create a new AbstractRefreshableApplicationContext with the given parent context.

  Parameters:
    `parent` - the parent context

Method Detail

### refreshBeanFactory

    protected final void refreshBeanFactory()
                                     throws BeansException

  Description copied from class: `AbstractApplicationContext`
  Subclasses must implement this method to perform the actual configuration load. The method is invoked by `AbstractApplicationContext.refresh()` before any other initialization work.

  A subclass will either create a new bean factory and hold a reference to it, or return a single BeanFactory instance that it holds. In the latter case, it will usually throw an IllegalStateException if refreshing the context more than once.

  Specified by:
    `refreshBeanFactory` in class `AbstractApplicationContext`
  Throws:
    `BeansException` - if initialization of the bean factory failed

### closeBeanFactory

    protected final void closeBeanFactory()

  Description copied from class: `AbstractApplicationContext`
  Subclasses must implement this method to release their internal bean factory. This method gets invoked by `AbstractApplicationContext.close()` after all other shutdown work.

  Should never throw an exception but rather log shutdown failures.

  Specified by:
    `closeBeanFactory` in class `AbstractApplicationContext`

### getBeanFactory

    public final ConfigurableListableBeanFactory getBeanFactory()

  Description copied from class: `AbstractApplicationContext`
  Subclasses must return their internal bean factory here. They should implement the lookup efficiently, so that it can be called repeatedly without a performance penalty.

  Note: Subclasses should check whether the context is still active before returning the internal bean factory. The internal factory should generally be considered unavailable once the context has been closed.

  Specified by:
    `getBeanFactory` in interface `ConfigurableApplicationContext`
  Specified by:
    `getBeanFactory` in class `AbstractApplicationContext`
  Returns:
    this application context's internal bean factory (never `null`)
  See Also:
    `AbstractApplicationContext.refreshBeanFactory()`, `AbstractApplicationContext.closeBeanFactory()`

### createBeanFactory

    protected DefaultListableBeanFactory createBeanFactory()

  Create an internal bean factory for this context. Called for each `AbstractApplicationContext.refresh()` attempt.

  The default implementation creates a `DefaultListableBeanFactory` with the `internal bean factory` of this context's parent as parent bean factory. Can be overridden in subclasses, for example to customize DefaultListableBeanFactory's settings.

  Returns:
    the bean factory for this context
  See Also:
    `DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean)`, `DefaultListableBeanFactory.setAllowEagerClassLoading(boolean)`, `AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean)`, `AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)`

### customizeBeanFactory

    protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory)

  Customize the internal bean factory used by this context. Called for each `AbstractApplicationContext.refresh()` attempt.

  The default implementation is empty. Can be overridden in subclasses to customize DefaultListableBeanFactory's standard settings.

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

### loadBeanDefinitions

    protected abstract void loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
                                         throws IOException,
                                                BeansException

  Load bean definitions into the given bean factory, typically through delegating to one or more bean definition readers.

  Parameters:
    `beanFactory` - the bean factory to load bean definitions into
  Throws:
    `IOException` - if loading of bean definition files failed
    `BeansException` - if parsing of the bean definitions failed
  See Also:
    `PropertiesBeanDefinitionReader`, `XmlBeanDefinitionReader`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2007 The Spring Framework.