@Stateless public class A{ @Inject private B b; } @Stateless public class B{ @Inject private C c; } @Stateless public class C{ @Inject private A a; }
显然,我有循环依赖.根据规格:@H_502_5@
The container is required to support circularities in the bean
dependency graph where at least one bean participating in every
circular chain of dependencies has a normal scope@H_502_5@
org.jboss.weld.exceptions.DeploymentException: WELD-001443: Pseudo scoped bean has circular dependencies. Dependency path: @H_502_5@
-Session bean [class A with
qualifiers [@Default @Any]; local interfaces are
[A]
BackedAnnotatedField] @Inject private B,@H_502_5@[..]@H_502_5@
我的问题是:@Stateless bean的范围是什么?它默认是@Dependent吗?最重要的是我如何在无状态会话bean之间启用循环依赖?@H_502_5@
对不起,如果这个问题太琐碎了.我会感谢任何好的进一步阅读资料,这将解释所呈现的行为.提前致谢.@H_502_5@
更新
好.我找到了解决方法.我使用@EJB注释而不是@Inject,但这并不能解释@Inject的奇怪行为.这个问题仍未解决,但正如Mika所说,它在CDI规范和Weld RI中都可能是未解决的问题.@H_502_5@