ConfigurableApplicationContext class abstract
A specialized ApplicationContext that allows for full configuration and lifecycle management.
ConfigurableApplicationContext extends the basic context interface with comprehensive lifecycle control and configuration capabilities, making it suitable for application bootstrap and runtime management.
Enhanced Capabilities:
- Lifecycle Management: Full control over context lifecycle phases
- Programmatic Configuration: Add initializers, listeners, and processors
- Dynamic Reconfiguration: Refresh context to reload configuration
- Resource Management: Proper cleanup and resource disposal
- Event System Integration: Complete event listener management
Typical Usage Pattern:
class MyApplicationContext extends AbstractApplicationContext
implements ConfigurableApplicationContext {
@override
Future<void> refresh() async {
// Custom refresh logic
await super.refresh();
}
@override
Future<void> start() async {
// Custom startup logic
await super.start();
}
}
void main() async {
final context = MyApplicationContext();
// Configure context before refresh
context.addApplicationListener(MyEventListener());
context.addPodFactoryPostProcessor(MyPostProcessor());
// Initialize context
await context.refresh();
// Start context (if not auto-startup)
await context.start();
// Application runs...
// Proper shutdown
await context.stop();
await context.close();
}
Lifecycle Phases:
- Configuration: Add listeners, initializers, processors
- Refresh: Load configuration, instantiate pods, publish events
- Start: Transition to running state, start lifecycle beans
- Running: Normal operation, event processing
- Stop: Transition to stopped state, stop lifecycle beans
- Close: Release resources, destroy pods, close context
See also:
- ApplicationContext for the basic context interface
- SmartLifecycle for lifecycle management
Closeable
for resource cleanup
- Inheritance
-
- Object
- SmartLifecycle
- ConfigurableApplicationContext
- Implemented types
- Implementers
Constructors
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
addApplicationListener(
ApplicationEventListener< ApplicationEvent> listener) → Future<void> - Adds an ApplicationEventListener to be notified of all ApplicationEvents.
-
addPodAwareProcessor(
PodAwareProcessor processor) → void -
Registers a new pod-aware processor.
inherited
-
addPodFactoryPostProcessor(
PodFactoryPostProcessor processor) → void - Adds a PodFactoryPostProcessor to be applied to the pod factory.
-
addSingletonCallback(
String name, Class type, Consumer< Object> callback) → void -
Add a callback to be executed when the singleton associated with
name
is initialized.inherited -
clearMetadataCache(
) → void -
Clears the internal metadata cache.
inherited
-
clearSingletonCache(
) → void -
Clears all cached singleton pods.
inherited
-
close(
) → Future< void> -
Closes this resource, relinquishing any underlying resources.
inherited
-
containsDefinition(
String name) → bool -
Returns
true
if this registry contains a pod with the givenname
.inherited -
containsLocalPod(
String podName) → Future< bool> -
Checks if a pod with the given name is registered locally in this factory.
inherited
-
containsPod(
String podName) → Future< bool> -
Checks if a pod with the given name is registered in the factory.
inherited
-
containsSingleton(
String name) → bool -
Returns
true
if this registry contains a pod with the givenname
.inherited -
containsType(
Class type, [bool allowPodProviderInit = false]) → Future< bool> -
Checks if the factory contains a pod of the specified type.
inherited
-
copyConfigurationFrom(
ConfigurablePodFactory otherFactory) → void -
Copies configuration from another factory.
inherited
-
destroyPod(
String podName, Object podInstance) → Future< void> -
Destroys a pod instance by name and instance.
inherited
-
destroyScopedPod(
String podName) → void -
Destroys all pods in the specified scope.
inherited
-
destroySingletons(
) → void -
Destroys all singleton pods in the factory.
inherited
-
findAllAnnotationsOnPod<
A> (String podName, Class< A> type) → Future<Set< A> > -
Finds all annotations of the specified type on a pod.
inherited
-
findAnnotationOnPod<
A> (String podName, Class< A> type) → Future<A?> -
Finds a specific annotation on a pod.
inherited
-
get<
T> (Class< T> type, [List<ArgumentValue> ? args]) → Future<T> -
Retrieves a pod instance by its type with optional arguments.
inherited
-
getAliases(
String podName) → List< String> -
Retrieves all alias names for the specified pod.
inherited
-
getAllowCircularReferences(
) → bool -
Retrieves the current circular reference setting.
inherited
-
getAllowDefinitionOverriding(
) → bool -
Retrieves the current definition overriding setting.
inherited
-
getAllowRawInjectionEvenWhenWrapped(
) → bool -
Retrieves the current raw injection despite wrapping setting.
inherited
-
getApplicationEventBus(
) → ApplicationEventBus - Returns the ApplicationEventBus currently associated with this application context.
-
getApplicationName(
) → String -
Returns the name of this application.
inherited
-
getApplicationStartup(
) → ApplicationStartup -
Defines a contract for components that are aware of and can interact with
an
ApplicationStartup
strategy.inherited -
getConversionService(
) → ConversionService -
Retrieves the currently assigned
ConversionService
. -
getDefinition(
String name) → PodDefinition -
Retrieve the pod registered under
name
.inherited -
getDefinitionNames(
) → List< String> -
Returns a list of all pod names currently registered.
inherited
-
getDisplayName(
) → String -
Returns the display name of this application context.
inherited
-
getEnvironment(
) → Environment -
🫘 Returns the
Environment
associated with the current context.inherited -
getId(
) → String -
Returns a unique identifier for this application context.
inherited
-
getMainApplicationClass(
) → Class< Object> -
Returns the main application class.
inherited
-
getMergedPodDefinition(
String podName) → RootPodDefinition -
Retrieves the merged pod definition for the specified pod name.
inherited
-
getMessage(
String code, {List< Object> ? args, Locale? locale, String? defaultMessage}) → String -
Retrieve a message for the given code.
inherited
-
getMessageSource(
) → MessageSource - Returns the configured MessageSource.
-
getNamedObject(
String podName, [List< ArgumentValue> ? args]) → Future<Object> -
Retrieves a pod as a generic Object by its name with optional arguments.
inherited
-
getNumberOfPodDefinitions(
) → int -
Returns the total number of pods registered.
inherited
-
getObject(
Class< Object> type, [List<ArgumentValue> ? args]) → Future<Object> -
Retrieves a pod as a generic Object by its type with optional arguments.
inherited
-
getPackageName(
) → String -
Represents an abstraction for identifying the package that an object,
resource, or service belongs to.
inherited
-
getParent(
) → ApplicationContext? -
Returns the parent context, if any.
inherited
-
getParentFactory(
) → PodFactory? -
Retrieves the parent factory in the hierarchy, if any.
inherited
-
getPhase(
) → int -
Interface for objects that may participate in a phased process
such as lifecycle management.
inherited
-
getPod<
T> (String podName, [List< ArgumentValue> ? args, Class<T> ? type]) → Future<T> -
Retrieves a pod instance by its name with optional arguments.
inherited
-
getPodAwareProcessorCount(
) → int -
Gets the number of registered pod-aware processors.
inherited
-
getPodAwareProcessors(
) → List< PodAwareProcessor> -
Retrieves all registered pod-aware processors.
inherited
-
getPodClass(
String podName) → Future< Class> -
Retrieves the Class object for the specified pod name.
inherited
-
getPodExpressionResolver(
) → PodExpressionResolver? -
Retrieves the current expression resolver.
inherited
-
getPodFactory(
) → ConfigurableListablePodFactory -
🫘 Returns the underlying
ConfigurableListablePodFactory
.inherited -
getPodNames(
Class type, {bool includeNonSingletons = false, bool allowEagerInit = false}) → Future< List< String> > -
Retrieves all pod names for pods of the specified type.
inherited
-
getPodNamesForAnnotation<
A> (Class< A> type) → Future<List< String> > -
Retrieves pod names for pods annotated with the specified annotation type.
inherited
-
getPodNamesIterator(
) → Iterator< String> -
Returns an iterator over all pod names in the factory.
inherited
-
getPodsOf<
T> (Class< T> type, {bool includeNonSingletons = false, bool allowEagerInit = false}) → Future<Map< String, T> > -
Retrieves all pods of the specified type as a map of name to instance.
inherited
-
getPodsWithAnnotation<
A> (Class< A> type) → Future<Map< String, Object> > -
Retrieves pods with the specified annotation as a map of name to instance.
inherited
-
getProvider<
T> (Class< T> type, {String? podName, bool allowEagerInit = false}) → Future<ObjectProvider< T> > -
Retrieves a provider for a pod, allowing for lazy or eager initialization.
inherited
-
getRegisteredScope(
String scopeName) → PodScope? -
Retrieves a registered scope by name.
inherited
-
getRegisteredScopeNames(
) → List< String> -
Retrieves all registered scope names.
inherited
-
getSingleton(
String name, {bool allowEarlyReference = true, ObjectFactory< Object> ? factory}) → Future<Object?> -
Retrieve the pod registered under
name
.inherited -
getSingletonCount(
) → int -
Returns the total number of pods registered.
inherited
-
getSingletonNames(
) → List< String> -
Returns a list of all pod names currently registered.
inherited
-
getStartTime(
) → DateTime -
Returns the startup time of this context as a DateTime.
inherited
-
isActive(
) → bool -
Returns whether this application context is currently active.
inherited
-
isActuallyInCreation(
String podName) → bool -
Checks if a pod with the given name is currently being created.
inherited
-
isAutoStartup(
) → bool -
An extension of the Lifecycle interface for those objects that require
to be started upon ApplicationContext refresh and/or shutdown in a
particular order.
inherited
-
isAutowireCandidate(
String podName, DependencyDescriptor descriptor) → bool -
Checks if a pod is a candidate for autowiring for the given dependency.
inherited
-
isCachePodMetadata(
) → bool -
Checks if pod metadata caching is enabled.
inherited
-
isClosed(
) → bool -
Returns whether this application context has been closed.
inherited
-
isNameInUse(
String name) → Future< bool> -
Returns
true
ifname
is currently in use in this registry.inherited -
isPodProvider(
String podName, [RootPodDefinition? rpd]) → Future< bool> -
Checks if the specified pod name refers to a pod provider.
inherited
-
isPrototype(
String podName) → Future< bool> -
Checks if the specified pod is configured as a prototype.
inherited
-
isRunning(
) → bool -
Check whether this component is currently running.
inherited
-
isSingleton(
String podName) → Future< bool> -
Checks if the specified pod is configured as a singleton.
inherited
-
isTypeMatch(
String name, Class typeToMatch, [bool allowPodProviderInit = false]) → Future< bool> -
Checks if the pod with the specified name matches the given type.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
preInstantiateSingletons(
) → Future< void> -
Pre-instantiates all singleton pods.
inherited
-
publishEvent(
ApplicationEvent event) → Future< void> -
Publishes the given
event
to all registered ApplicationEventListeners.inherited -
refresh(
) → Future< void> - Refreshes this application context:
-
register(
PodRegistrar registrar) → void -
Registers a
registrar
that declares pods into this registry.inherited -
registerAlias(
String name, String alias) → void -
Registers an alias for an existing name in the registry.
inherited
-
registerDefinition(
String name, PodDefinition pod) → Future< void> -
Register a new
pod
under the givenname
.inherited -
registerIgnoredDependency(
Class type) → void -
Registers a dependency type that should be ignored during autowiring.
inherited
-
registerPod<
T> (Class< T> podClass, {Consumer<Spec< ? customizer, String? name}) → voidT> > -
Registers a pod of type
T
in the registry.inherited -
registerResolvableDependency(
Class type, [Object? autowiredValue]) → void -
Registers a resolvable dependency for autowiring.
inherited
-
registerScope(
String scopeName, PodScope scope) → void -
Registers a new scope with the given name.
inherited
-
registerSingleton(
String name, Class type, {ObjectHolder< Object> ? object, ObjectFactory<Object> ? factory}) → Future<void> -
Register a new
pod
under the givenname
.inherited -
removeDefinition(
String name) → Future< void> -
Remove the pod associated with
name
.inherited -
removeSingleton(
String name) → void -
Remove the pod associated with
name
.inherited -
resolveDependency(
DependencyDescriptor descriptor, [Set< String> ? autowiredPods]) → Future<Object?> -
Resolves a dependency based on the provided descriptor.
inherited
-
setAllowCircularReferences(
bool value) → void -
Allows or disallows circular references between pods.
inherited
-
setAllowDefinitionOverriding(
bool value) → void -
Allows or disallows overriding of pod definitions.
inherited
-
setAllowRawInjectionEvenWhenWrapped(
bool value) → void -
Allows or disallows raw injection despite wrapping.
inherited
-
setApplicationEventBus(
ApplicationEventBus applicationEventBus) → void - Sets the ApplicationEventBus for this application context.
-
setApplicationStartup(
ApplicationStartup applicationStartup) → void -
Defines a contract for components that are aware of and can interact with
an
ApplicationStartup
strategy.inherited -
setCachePodMetadata(
bool cachePodMetadata) → void -
Enables or disables caching of pod metadata for performance optimization.
inherited
-
setConversionService(
ConversionService conversionService) → void -
Sets an assigned
ConversionService
. -
setEnvironment(
Environment environment) → void -
Sets the
Environment
that this component runs in.inherited -
setMainApplicationClass(
Class< Object> mainApplicationClass) → void - Sets the main application class.
-
setMessageSource(
MessageSource messageSource) → void - Sets the MessageSource used for resolving internationalized messages.
-
setParent(
ApplicationContext parent) → void - Sets the parent of this application context.
-
setParentFactory(
PodFactory? parentFactory) → void -
Sets the parent factory for this hierarchical factory.
inherited
-
setPodExpressionResolver(
PodExpressionResolver? valueResolver) → void -
Sets the expression resolver for resolving expressions in pod definitions.
inherited
-
start(
) → FutureOr< void> -
A common interface defining methods for start/stop lifecycle control.
inherited
-
stop(
[Runnable? callback]) → FutureOr< void> -
Stop this component, typically in a synchronous fashion.
inherited
-
supports(
ApplicationType applicationType) → bool -
Returns whether this context supports the given
applicationType
.inherited -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited