Class CircularDependencyChecker

java.lang.Object
cool.scx.bean.dependency.CircularDependencyChecker

public class CircularDependencyChecker extends Object

循环依赖检测器, 负责检测并处理循环依赖链条。

为了确保循环依赖的检测正确性,设计上假设:

【DependencyContext 幂等性假设】

  • 在同一条依赖链(CURRENT_DEPENDENCY_CHAIN)内, 如果出现相同的 beanClass(即类对象)多次, 则这些 DependencyContext 实例的关键属性(singleton、type 等) 必然一致。

该假设基于以下设计保证:

  • 依赖链是线性推进的,每次依赖的创建都是按照顺序发生的,不会跳跃或分支。
  • 每个 DependencyContext 实例在第一次创建时即被固定下来,并且不会发生变化。
  • 使用 ThreadLocal 确保每个线程的依赖链独立,避免线程间相互干扰。

在此假设下,我们可以简单地从创建链中提取循环依赖的子链,而无需手动添加当前依赖的 context。

⚠️ 请注意,未来引入更复杂的功能(如动态 Scope、并发构建等)时, 需要重新评估此假设是否仍然有效。

Version:
0.0.1
Author:
scx567888