【发布时间】:2015-09-27 09:06:05
【问题描述】:
我在部署两个相互依赖的无状态会话 bean 并使用 @Inject 时遇到了部署错误。
@Stateless
class BeanA {
@Inject
BeanB b;
public void doSomething() {
b.doSomething();
}
}
@Stateless
class BeanB {
@Inject
BeanA a;
public void doSomeOtherThing() {
a.doSomeOtherThing();
}
}
在部署这个时,我从 Glassfish/weld 得到这个异常:
org.jboss.weld.exceptions.DeploymentException: WELD-001443 伪 scoped bean 有循环依赖。
使用@EJB 而不是@Inject 注入Bean,一切正常。现在我有两个问题。
首先 - 焊缝内部发生了什么是不允许的?
第二个(可能更重要)——这种做法在架构方面是不是很糟糕,如果是的话,你知道有什么模式可以避免吗?根据我目前的知识,同一层上的业务驱动服务可以以他们需要的任何方式相互通信。
【问题讨论】:
标签: java jakarta-ee ejb cdi