public interface

ConfigurableApplicationContext

implements ApplicationContext Lifecycle
org.springframework.context.ConfigurableApplicationContext
Known Indirect Subclasses

Class Overview

SPI interface to be implemented by most if not all application contexts. Provides facilities to configure an application context in addition to the application context client methods in the ApplicationContext interface.

Configuration and lifecycle methods are encapsulated here to avoid making them obvious to ApplicationContext client code. The present methods should only be used by startup and shutdown code.

Summary

Constants
String CONFIG_LOCATION_DELIMITERS Any number of these characters are considered delimiters between multiple context config paths in a single String value.
String CONVERSION_SERVICE_BEAN_NAME Name of the ConversionService bean in the factory.
String ENVIRONMENT_BEAN_NAME Name of the Environment bean in the factory.
String LOAD_TIME_WEAVER_BEAN_NAME Name of the LoadTimeWeaver bean in the factory.
String SYSTEM_ENVIRONMENT_BEAN_NAME Name of the System environment bean in the factory.
String SYSTEM_PROPERTIES_BEAN_NAME Name of the System properties bean in the factory.
[Expand]
Inherited Constants
From interface org.springframework.beans.factory.BeanFactory
From interface org.springframework.core.io.ResourceLoader
From interface org.springframework.core.io.support.ResourcePatternResolver
Public Methods
abstract void addApplicationListener(ApplicationListener<?> listener)
Add a new ApplicationListener that will be notified on context events such as context refresh and context shutdown.
abstract 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.
abstract void close()
Close this application context, releasing all resources and locks that the implementation might hold.
abstract ConfigurableListableBeanFactory getBeanFactory()
Return the internal bean factory of this application context.
abstract ConfigurableEnvironment getEnvironment()
Return the Environment for this application context in configurable form.
abstract boolean isActive()
Determine whether this application context is active, that is, whether it has been refreshed at least once and has not been closed yet.
abstract void refresh()
Load or refresh the persistent representation of the configuration, which might an XML file, properties file, or relational database schema.
abstract void registerShutdownHook()
Register a shutdown hook with the JVM runtime, closing this context on JVM shutdown unless it has already been closed at that time.
abstract void setEnvironment(ConfigurableEnvironment environment)
Set the Environment for this application context.
abstract void setId(String id)
Set the unique id of this application context.
abstract void setParent(ApplicationContext parent)
Set the parent of this application context.
[Expand]
Inherited Methods
From interface org.springframework.beans.factory.BeanFactory
From interface org.springframework.beans.factory.HierarchicalBeanFactory
From interface org.springframework.beans.factory.ListableBeanFactory
From interface org.springframework.context.ApplicationContext
From interface org.springframework.context.ApplicationEventPublisher
From interface org.springframework.context.Lifecycle
From interface org.springframework.context.MessageSource
From interface org.springframework.core.env.EnvironmentCapable
From interface org.springframework.core.io.ResourceLoader
From interface org.springframework.core.io.support.ResourcePatternResolver

Constants

public static final String CONFIG_LOCATION_DELIMITERS

Any number of these characters are considered delimiters between multiple context config paths in a single String value.

Constant Value: ",; "

public static final String CONVERSION_SERVICE_BEAN_NAME

Name of the ConversionService bean in the factory. If none is supplied, default conversion rules apply.

Constant Value: "conversionService"

public static final String ENVIRONMENT_BEAN_NAME

Name of the Environment bean in the factory.

Constant Value: "environment"

public static final String LOAD_TIME_WEAVER_BEAN_NAME

Name of the LoadTimeWeaver bean in the factory. If such a bean is supplied, the context will use a temporary ClassLoader for type matching, in order to allow the LoadTimeWeaver to process all actual bean classes.

See Also
Constant Value: "loadTimeWeaver"

public static final String SYSTEM_ENVIRONMENT_BEAN_NAME

Name of the System environment bean in the factory.

See Also
Constant Value: "systemEnvironment"

public static final String SYSTEM_PROPERTIES_BEAN_NAME

Name of the System properties bean in the factory.

See Also
Constant Value: "systemProperties"

Public Methods

public abstract void addApplicationListener (ApplicationListener<?> listener)

Add a new ApplicationListener that will be notified on context events such as context refresh and context shutdown.

Note that any ApplicationListener registered here will be applied on refresh if the context is not active yet, or on the fly with the current event multicaster in case of a context that is already active.

Parameters
listener the ApplicationListener to register

public abstract 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. To be invoked during context configuration.

Parameters
beanFactoryPostProcessor the factory processor to register

public abstract void close ()

Close this application context, releasing all resources and locks that the implementation might hold. This includes destroying all cached singleton beans.

Note: Does not invoke close on a parent context; parent contexts have their own, independent lifecycle.

This method can be called multiple times without side effects: Subsequent close calls on an already closed context will be ignored.

public abstract ConfigurableListableBeanFactory getBeanFactory ()

Return the internal bean factory of this application context. Can be used to access specific functionality of the underlying factory.

Note: Do not use this to post-process the bean factory; singletons will already have been instantiated before. Use a BeanFactoryPostProcessor to intercept the BeanFactory setup process before beans get touched.

Generally, this internal factory will only be accessible while the context is active, that is, inbetween refresh() and close(). The isActive() flag can be used to check whether the context is in an appropriate state.

Returns
  • the underlying bean factory
Throws
IllegalStateException if the context does not hold an internal bean factory (usually if refresh() hasn't been called yet or if close() has already been called)

public abstract ConfigurableEnvironment getEnvironment ()

Return the Environment for this application context in configurable form.

public abstract boolean isActive ()

Determine whether this application context is active, that is, whether it has been refreshed at least once and has not been closed yet.

Returns
  • whether the context is still active

public abstract void refresh ()

Load or refresh the persistent representation of the configuration, which might an XML file, properties file, or relational database schema.

As this is a startup method, it should destroy already created singletons if it fails, to avoid dangling resources. In other words, after invocation of that method, either all or no singletons at all should be instantiated.

Throws
BeansException if the bean factory could not be initialized
IllegalStateException if already initialized and multiple refresh attempts are not supported

public abstract void registerShutdownHook ()

Register a shutdown hook with the JVM runtime, closing this context on JVM shutdown unless it has already been closed at that time.

This method can be called multiple times. Only one shutdown hook (at max) will be registered for each context instance.

public abstract void setEnvironment (ConfigurableEnvironment environment)

Set the Environment for this application context.

Parameters
environment the new environment

public abstract void setId (String id)

Set the unique id of this application context.

public abstract 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.

Parameters
parent the parent context