# ConfigurablePodFactory class abstract interface

A comprehensive pod factory interface with configuration capabilities.

This interface combines hierarchical functionality with configuration features such as scope management, lifecycle processors, and various factory behaviors. It's the main interface used by Jetleaf applications for configurable pod management.

## Usage Example:

    final factory = JetleafPodFactory();
    factory.setParentFactory(parentFactory);
    factory.registerScope('request', RequestScope());
    factory.setAllowCircularReferences(true);
    factory.addPodProcessor(MyCustomProcessor());

    // Start the factory
    await factory.refresh();

See also:

- HierarchicalPodFactory for parent-child hierarchy functionality
- ApplicationStartupAware for application lifecycle integration
- SingletonPodRegistry for singleton management

Implemented types
  - HierarchicalPodFactory
  - ApplicationStartupAware
  - SingletonPodRegistry
  - AliasRegistryAware

## Properties

hashCode → int
  The hash code for this object.
  no setter inherited
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited

## Methods

addPodProcessor(PodProcessor processor) → void
  Registers a new pod-aware processor.
addSingletonCallback(String name, Class type, Consumer<Object> callback) → void
  Add a callback to be executed when the singleton associated with `name` is initialized.
  inherited
clearSingletonCache() → void
  Clears all cached singleton pods.
  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.
destroyPod(String podName, Object podInstance) → Future<void>
  Destroys a pod instance by name and instance.
destroyScopedPod(String podName) → void
  Destroys all pods in the specified scope.
destroySingletons() → void
  Destroys all singleton pods in the factory.
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.
getAllowDefinitionOverriding() → bool
  Retrieves the current definition overriding setting.
getAllowRawInjectionEvenWhenWrapped() → bool
  Retrieves the current raw injection despite wrapping setting.
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.
getMergedPodDefinition(String podName) → RootPodDefinition
  Retrieves the merged pod definition for the specified pod name.
getNamedObject(String podName, [List<ArgumentValue>? args]) → Future<Object>
  Retrieves a pod as a generic Object by its name with optional arguments.
  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
getParentFactory() → PodFactory?
  Retrieves the parent factory in the hierarchy, if any.
  inherited
getPod<T>(String podName, [List<ArgumentValue>? args, Class<T>? type]) → Future<T>
  Retrieves a pod instance by its name with optional arguments.
  inherited
getPodProcessorCount() → int
  Gets the number of registered pod-aware processors.
getPodProcessors() → List<PodProcessor>
  Retrieves all registered pod-aware processors.
getPodClass(String podName) → Future<Class>
  Retrieves the Class object for the specified pod name.
  inherited
getPodExpressionResolver() → PodExpressionResolver?
  Retrieves the current expression resolver.
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.
getRegisteredScopeNames() → List<String>
  Retrieves all registered scope names.
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
isActuallyInCreation(String podName) → bool
  Checks if a pod with the given name is currently being created.
isCachePodMetadata() → bool
  Checks if pod metadata caching is enabled.
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
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
registerAlias(String name, String alias) → void
  Registers an alias for an existing name in the registry.
  inherited
registerScope(String scopeName, PodScope scope) → void
  Registers a new scope with the given name.
registerSingleton(String name, Class type, {ObjectHolder<Object>? object, ObjectFactory<Object>? factory}) → Future<void>
  Register a new `pod` under the given `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.
setAllowDefinitionOverriding(bool value) → void
  Allows or disallows overriding of pod definitions.
setAllowRawInjectionEvenWhenWrapped(bool value) → void
  Allows or disallows raw injection despite wrapping.
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.
setConversionService(ConversionService conversionService) → void
  Sets an assigned ConversionService.
setParentFactory(PodFactory? parentFactory) → void
  Sets the parent factory for this hierarchical factory.
setPodExpressionResolver(PodExpressionResolver? valueResolver) → void
  Sets the expression resolver for resolving expressions in pod definitions.
toString() → String
  A string representation of this object.
  inherited

## Operators

operator ==(Object other) → bool
  The equality operator.
  inherited