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:

  1. Configuration: Add listeners, initializers, processors
  2. Refresh: Load configuration, instantiate pods, publish events
  3. Start: Transition to running state, start lifecycle beans
  4. Running: Normal operation, event processing
  5. Stop: Transition to stopped state, stop lifecycle beans
  6. Close: Release resources, destroy pods, close context

See also:

Inheritance
Implemented types
Implementers

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 given name.
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 given name.
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 if name 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 given name.
inherited
registerIgnoredDependency(Class type) → void
Registers a dependency type that should be ignored during autowiring.
inherited
registerPod<T>(Class<T> podClass, {Consumer<Spec<T>>? customizer, String? name}) → void
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 given name.
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