Drives the top level Binding Resolution algorithm. This performs the following steps:
- Create a dependency graph representing all of the unresolved keys (required and optional)
for a Ginjector in the hierarchy. This graph will have internal nodes for all of the implicit
bindings that need to be created, and leaf nodes (no outgoing edges) for all bindings that are
already available to the Ginjector. See
DependencyExplorer
.
- Verify that there are no errors in the dependency graph. Errors are detected and reported as
described in
UnresolvedBindingValidator
which also makes use of EagerCycleFinder
.
- Determine which injector each of the implicit bindings should be placed in, according to the
constraints described in
BindingPositioner
.
- Install each implicit binding, and any
ParentBinding
s necessary to inherit
dependencies from higher in the hierarchy, to the Ginjectors. See BindingInstaller
.