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