fix(iot): B7 BranchNode @Lazy 注入 NodeProviderRegistry 打破循环依赖
启动失败:Spring 检测到环形依赖 nodeProviderRegistry → branchNode → nodeProviderRegistry 根因:BranchNode 既是 NodeProvider(被 Registry 收集),又依赖 Registry dispatch 子节点 — 典型 "collect vs dispatch" 死结。 修复:构造参数加 @Lazy,Spring 注入代理,首次方法调用才解析 Registry, 构造阶段打破环。运行期行为等价。 rule 模块 177/177 测试全绿。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ import com.viewsh.module.iot.rule.engine.NodeProviderRegistry;
|
||||
import com.viewsh.module.iot.rule.engine.NodeResult;
|
||||
import com.viewsh.module.iot.rule.engine.RuleContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
@@ -52,7 +53,7 @@ public class BranchNode implements NodeProvider {
|
||||
private final BranchExecutor branchExecutor;
|
||||
|
||||
public BranchNode(ConditionEvaluatorManager conditionEvaluatorManager,
|
||||
NodeProviderRegistry nodeProviderRegistry) {
|
||||
@Lazy NodeProviderRegistry nodeProviderRegistry) {
|
||||
this.conditionEvaluatorManager = conditionEvaluatorManager;
|
||||
this.nodeProviderRegistry = nodeProviderRegistry;
|
||||
this.branchExecutor = new BranchExecutor(conditionEvaluatorManager);
|
||||
|
||||
Reference in New Issue
Block a user