Represents a detected circular dependency within a dependency graph.
A DependencyCycle describes a closed dependency path in which one or more components ultimately depend on themselves, directly or indirectly.
This interface is used purely for diagnostic and reporting purposes and does not participate in dependency resolution.
Concrete implementations define how the cycle is represented and may include additional diagnostic metadata such as ordering constraints, annotations, or resolution context.
Typical implementations may represent:
- Type or class cycles (e.g.
A → B → C → A) - Interceptor ordering cycles involving
@RunBefore/@RunAfter - Module, plugin, or pod initialization loops
Implementations are encouraged to:
- Preserve the order of dependencies forming the cycle
- Provide meaningful
toString()output for logging and diagnostics - Avoid holding strong references to instantiated objects when possible
See Also
- CircularDependencyException – Thrown when a circular dependency is detected.
- NoOpDependencyCycle – Sentinel implementation when details are unavailable.
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
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited