【发布时间】:2014-12-23 22:04:12
【问题描述】:
我正在制作两个 bean,分别是 ABean 和 BBean。我想将 BBean 注入 ABean 但这会导致空指针错误,可能是因为 bean 尚未实例化。我怎样才能在豆子中注入豆子:
@Singleton
public class ABean {
@Inject
BBean bean;
....
}
我正在使用 java ee 7 和 Wildfly 服务器。两个 bean 都是单例,所以 BBean 也被声明为:
public class BBean {
@PostConstruct
public void startup() {
..
}
..
}
没有依赖项,我可以创建两个 bean,因为我确实有必要的 META-INF 文件夹和 beans.xml 文件。然而,我得出的结论是,这可能是不好的做法/反模式。不管怎样,我不再使用这种方法了。
【问题讨论】:
-
你是如何创建 ABean 的?
-
你用的是什么应用服务器?
-
有很多事情可能会导致这种情况。 beans.xml 看起来如何?您正在使用哪个版本的 java EE 或更准确地说是 CDI 等。我们需要在这里为您提供帮助。
-
典型问题是在构造函数中使用注入的 bean。您需要等到调用构造函数之后,例如使用
@PostConstruct方法。还要将注入的 bean 设为私有,因为暴露它们可能需要更多的开销/限制。 -
在上面的示例中,您没有使用范围注释 BBean 的类。如果真的是这样,那就是你的问题。
标签: java jakarta-ee javabeans cdi