我正在尝试使用 Weld 来理解 CDI。得到下一个结构:
@ApplicationScoped
public class MainFacade {
@Inject
private FooFacade fooFacade;
private static int ins=0;
public MainFacade() {
super();
ins++;
System.out.println("MainFacade instance = "+ins);
}
public FooFacade getFooFacade() {
return fooFacade;
}
}
其中 FooFacade 也是 @ApplicationScope。
当应用程序启动时,我得到一个 MainFacade 实例 = 1。当我将它注入其他类(GWT RPC servlet)并调用 mainFacade.getFooFacade() 时,将创建 MainFacade 的新实例以及 fooFacade 的新实例。
认为 Weld 会在我注入它的任何地方返回相同的应用程序范围 bean 实例。我做错了什么?