graph LR
Injector_Core["Injector Core"]
Module["Module"]
Binder["Binder"]
Binding["Binding"]
Provider["Provider"]
Injection_Logic["Injection Logic"]
Scope_Management["Scope Management"]
Proxying["Proxying"]
Injector_Core -- "installs" --> Module
Injector_Core -- "defines bindings via" --> Binder
Injector_Core -- "creates and stores" --> Binding
Injector_Core -- "resolves dependencies using" --> Injection_Logic
Injection_Logic -- "retrieves" --> Binding
Injector_Core -- "obtains instances from" --> Provider
Injector_Core -- "manages object lifecycle with" --> Scope_Management
Injector_Core -- "creates proxies via" --> Proxying
Binding -- "references" --> Provider
Injection_Logic -- "requests dependencies from" --> Injector_Core
Scope_Management -- "is part of" --> Injector_Core
Proxying -- "is an internal mechanism of" --> Injector_Core
click Injector_Core href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/injector/Injector_Core.md" "Details"
The injector subsystem provides a robust dependency injection framework centered around the Injector Core. This core component is responsible for managing the entire dependency resolution process, from accepting Module configurations that define Bindings via a Binder interface, to creating and storing these Bindings. When an object is requested, the Injector Core leverages its Injection Logic to identify and resolve dependencies, obtaining instances from associated Providers. Furthermore, it employs Scope Management to control object lifecycles and utilizes Proxying for deferred dependency resolution, ensuring efficient and flexible object graph construction.
Injector Core [Expand]
The central orchestrator managing dependency resolution and providing the primary interface for clients to obtain injected objects. It is responsible for configuring, storing, and resolving dependencies based on defined bindings, and for managing the lifecycle of injected objects through scopes.
Related Classes/Methods:
injector.Injectorinjector.Injector:bindinjector.Injector:getinjector.Injector:installinjector.Injector:create_objectinjector.Injector:call_with_injectioninjector.Injector:create_child_injector
A configuration unit used by Injector Core to define and organize a set of bindings. Modules encapsulate the setup logic for specific parts of an application, promoting modularity.
Related Classes/Methods:
An interface or component used by Injector Core to define and manage Binding objects. It provides methods for declaring how dependencies should be resolved.
Related Classes/Methods:
An object created and stored by Injector Core that maps a key (e.g., an interface or type) to a Provider instance. It represents a specific dependency declaration.
Related Classes/Methods:
An instance associated with a Binding object, responsible for producing the actual object instance when requested. Providers abstract the object creation logic.
Related Classes/Methods:
Components or internal mechanisms leveraged by Injector Core to identify and resolve dependencies for callable arguments (e.g., constructor parameters, method arguments) using introspection and type hints.
Related Classes/Methods:
injector.Injector:injectinjector.Injector:args_to_injectinjector.Injector:_infer_injected_bindings
Components or internal mechanisms used by Injector Core to manage the lifecycle of injected objects, ensuring that instances are created and reused according to defined scopes (e.g., singleton, per-request). This includes handling child injectors and delegation.
Related Classes/Methods:
Components utilized by Injector Core to create deferred resolution objects (proxies). These proxies act as placeholders, enabling lazy loading and helping to resolve circular dependencies by delaying the actual object instantiation until it's truly needed.
Related Classes/Methods: