gpt4 book ai didi

dependency-injection - CDI 注入(inject)回路

转载 作者:行者123 更新时间:2023-12-04 16:35:05 25 4
gpt4 key购买 nike

我在 JBoss 7.1.1 的 Weld 容器中遇到 CDI 注入(inject)问题

我有以下对象模型:

@Stateless
class ServiceEjb {
@Inject
A a;
}

class A {
@Inject
B b;
}

class B {
@Inject
A a;
}

当尝试在我的无状态类中注入(inject) A 或 B 时,注入(inject)循环并因 javax.enterprise.inject.CreationException 而崩溃。

我尝试了很多事情(范围界定,A 或 B 上的 @Singleton 但没有成功)。
我不想破坏代码,这些注入(inject)是有道理的。

任何线索将不胜感激。

最佳答案

Circular dependency injection is not required by the CDI standard , 除非循环中至少有一个 bean 具有 normal scope . 最简单的解决方案是给 A 或 B 一个正常的范围。 如果你不能给任何一个正常的范围(从代码模型来看,看起来它们都有默认的 @Dependent 伪范围),你将不得不寻找其他解决方案。发布一个真实的代码示例可能会让我们帮助您提供特定的解决方案,但这里是一个开始:

  • A 和 B 可以合并到同一个类中吗?
  • 是否可以从 A 和 B 中提取一个新类 C,使得 A 和 B @Inject C而不是彼此?

  • 以下是一些 SO 链接,其中包含您可能会发现有用的其他解决方案:

    MVP with CDI; avoiding circular dependency

    https://stackoverflow.com/questions/14044538/how-to-avoid-cdi-circular-dependency

    关于dependency-injection - CDI 注入(inject)回路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15300338/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com