Top Description Fields Methods
org.springframework.context

public Interface ConfigurableApplicationContext

extends ApplicationContext, Lifecycle, Closeable
Known Direct Implementers
org.springframework.context.support.AbstractApplicationContext
Imports
java.io.Closeable, org.springframework.beans.BeansException, org.springframework.beans.factory.config.BeanFactoryPostProcessor, .ConfigurableListableBeanFactory, org.springframework.core.env.ConfigurableEnvironment, .Environment, org.springframework.core.io.ProtocolResolver, org.springframework.core.metrics.ApplicationStartup, org.springframework.lang.Nullable

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 org.springframework.context.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.

Authors
Juergen Hoeller, Chris Beams, Sam Brannen
Since
03.11.2003

Field Summary

Modifier and TypeField and Description
public static final String
APPLICATION_STARTUP_BEAN_NAME

Name of the ApplicationStartup bean in the factory.

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.

public static final String
CONVERSION_SERVICE_BEAN_NAME

Name of the ConversionService bean in the factory.

public static final String
ENVIRONMENT_BEAN_NAME

Name of the Environment bean in the factory.

public static final String
LOAD_TIME_WEAVER_BEAN_NAME

Name of the LoadTimeWeaver bean in the factory.

public static final String
SHUTDOWN_HOOK_THREAD_NAME

Name of the shutdown hook thread: SpringContextShutdownHook.

public static final String
SYSTEM_ENVIRONMENT_BEAN_NAME

Name of the System environment bean in the factory.

public static final String
SYSTEM_PROPERTIES_BEAN_NAME

Name of the System properties bean in the factory.

Method Summary

Modifier and TypeMethod and Description
public void
addApplicationListener(ApplicationListener<?>
the ApplicationListener to register
listener
)

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

public void
addBeanFactoryPostProcessor(BeanFactoryPostProcessor
the factory processor to register
postProcessor
)

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.

public void
addProtocolResolver(ProtocolResolver resolver)

Register the given protocol resolver with this application context, allowing for additional resource protocols to be handled.

public void
close()

Redeclares java.io.Closeable.close.

Close this application context, releasing all resources and locks that the implementation might hold.

public ApplicationStartup
getApplicationStartup()

Return the ApplicationStartup for this application context.

public ConfigurableListableBeanFactory

Returns:

the underlying bean factory
getBeanFactory
()

Return the internal bean factory of this application context.

public ConfigurableEnvironment
getEnvironment()

Redeclares org.springframework.core.env.EnvironmentCapable.getEnvironment.

Return the Environment for this application context in configurable form, allowing for further customization.

public boolean

Returns:

whether the context is still active
isActive
()

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

public void
refresh()

Load or refresh the persistent representation of the configuration, which might be from Java-based configuration, an XML file, a properties file, a relational database schema, or some other format.

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

public void
removeApplicationListener(ApplicationListener<?>
the ApplicationListener to deregister
listener
)

Remove the given ApplicationListener from this context's set of listeners, assuming it got registered via addApplicationListener before.

public void
setApplicationStartup(ApplicationStartup
the new context event factory
applicationStartup
)

Set the ApplicationStartup for this application context.

public void
setClassLoader(ClassLoader classLoader)

Specify the ClassLoader to load class path resources and bean classes with.

public void
setEnvironment(ConfigurableEnvironment
the new environment
environment
)

Set the Environment for this application context.

public void
setId(String id)

Set the unique id of this application context.

public void
setParent(ApplicationContext
the parent context
parent
)

Set the parent of this application context.

Inherited from org.springframework.context.ApplicationContext:
getApplicationNamegetAutowireCapableBeanFactorygetDisplayNamegetIdgetParentgetStartupDate
Inherited from org.springframework.context.Lifecycle:
isRunningstartstop

Field Detail

APPLICATION_STARTUP_BEAN_NAMEback to summary
public static final String APPLICATION_STARTUP_BEAN_NAME

Name of the ApplicationStartup bean in the factory.

Since
5.3
CONFIG_LOCATION_DELIMITERSback to summary
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.

See Also
org.springframework.context.support.AbstractXmlApplicationContext#setConfigLocation, org.springframework.web.context.ContextLoader#CONFIG_LOCATION_PARAM, org.springframework.web.servlet.FrameworkServlet#setContextConfigLocation
CONVERSION_SERVICE_BEAN_NAMEback to summary
public static final String CONVERSION_SERVICE_BEAN_NAME

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

Since
3.0
See Also
org.springframework.core.convert.ConversionService
ENVIRONMENT_BEAN_NAMEback to summary
public static final String ENVIRONMENT_BEAN_NAME

Name of the Environment bean in the factory.

Since
3.1
LOAD_TIME_WEAVER_BEAN_NAMEback to summary
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.

Since
2.5
See Also
org.springframework.instrument.classloading.LoadTimeWeaver
SHUTDOWN_HOOK_THREAD_NAMEback to summary
public static final String SHUTDOWN_HOOK_THREAD_NAME

Name of the shutdown hook thread: SpringContextShutdownHook.

Since
5.2
See Also
registerShutdownHook()
SYSTEM_ENVIRONMENT_BEAN_NAMEback to summary
public static final String SYSTEM_ENVIRONMENT_BEAN_NAME

Name of the System environment bean in the factory.

See Also
java.lang.System#getenv()
SYSTEM_PROPERTIES_BEAN_NAMEback to summary
public static final String SYSTEM_PROPERTIES_BEAN_NAME

Name of the System properties bean in the factory.

See Also
java.lang.System#getProperties()

Method Detail

addApplicationListenerback to summary
public 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:ApplicationListener<?>

the ApplicationListener to register

See Also
org.springframework.context.event.ContextRefreshedEvent, org.springframework.context.event.ContextClosedEvent
addBeanFactoryPostProcessorback to summary
public void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor)

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
postProcessor:BeanFactoryPostProcessor

the factory processor to register

addProtocolResolverback to summary
public void addProtocolResolver(ProtocolResolver resolver)

Register the given protocol resolver with this application context, allowing for additional resource protocols to be handled.

Any such resolver will be invoked ahead of this context's standard resolution rules. It may therefore also override any default rules.

Since
4.3
closeback to summary
public void close()

Redeclares java.io.Closeable.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.

Annotations
@Override
getApplicationStartupback to summary
public ApplicationStartup getApplicationStartup()

Return the ApplicationStartup for this application context.

Since
5.3
getBeanFactoryback to summary
public ConfigurableListableBeanFactory getBeanFactory() throws IllegalStateException

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, in-between refresh() and close(). The isActive() flag can be used to check whether the context is in an appropriate state.

Returns:ConfigurableListableBeanFactory

the underlying bean factory

Exceptions
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)
See Also
isActive(), refresh(), close(), addBeanFactoryPostProcessor
getEnvironmentback to summary
public ConfigurableEnvironment getEnvironment()

Redeclares org.springframework.core.env.EnvironmentCapable.getEnvironment.

Return the Environment for this application context in configurable form, allowing for further customization.

Annotations
@Override
Since
3.1
isActiveback to summary
public 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:boolean

whether the context is still active

See Also
refresh(), close(), getBeanFactory()
refreshback to summary
public void refresh() throws BeansException, IllegalStateException

Load or refresh the persistent representation of the configuration, which might be from Java-based configuration, an XML file, a properties file, a relational database schema, or some other format.

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 this method, either all or no singletons at all should be instantiated.

Exceptions
BeansException:
if the bean factory could not be initialized
IllegalStateException:
if already initialized and multiple refresh attempts are not supported
registerShutdownHookback to summary
public 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.

As of Spring Framework 5.2, the name of the shutdown hook thread should be SHUTDOWN_HOOK_THREAD_NAME.

See Also
java.lang.Runtime#addShutdownHook, close()
removeApplicationListenerback to summary
public void removeApplicationListener(ApplicationListener<?> listener)

Remove the given ApplicationListener from this context's set of listeners, assuming it got registered via addApplicationListener before.

Parameters
listener:ApplicationListener<?>

the ApplicationListener to deregister

Since
6.0
setApplicationStartupback to summary
public void setApplicationStartup(ApplicationStartup applicationStartup)

Set the ApplicationStartup for this application context.

This allows the application context to record metrics during startup.

Parameters
applicationStartup:ApplicationStartup

the new context event factory

Since
5.3
setClassLoaderback to summary
public void setClassLoader(ClassLoader classLoader)

Specify the ClassLoader to load class path resources and bean classes with.

This context class loader will be passed to the internal bean factory.

Since
5.2.7
See Also
org.springframework.core.io.DefaultResourceLoader#DefaultResourceLoader(ClassLoader), org.springframework.beans.factory.config.ConfigurableBeanFactory#setBeanClassLoader
setEnvironmentback to summary
public void setEnvironment(ConfigurableEnvironment environment)

Set the Environment for this application context.

Parameters
environment:ConfigurableEnvironment

the new environment

Since
3.1
setIdback to summary
public void setId(String id)

Set the unique id of this application context.

Since
3.0
setParentback to summary
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.

Parameters
parent:ApplicationContext

the parent context

See Also
org.springframework.web.context.ConfigurableWebApplicationContext