Guice协助注射单一范围

Wud*_*ong 4 java dependency-injection guice

我有一个接口A,一个B类工具A.

但是,B的构造函数看起来像:

     public class B (C c){}
Run Code Online (Sandbox Code Playgroud)

其中C是第三方库类,只能在引导程序之后创建.我希望B成为一个单身人士.

我发现很难在Guice中实现它.我知道我可以使用辅助注射器来做到这一点:

    public class B (@Assisted C c){}

    public AFactory {
          public A createA(C c);
    }
Run Code Online (Sandbox Code Playgroud)

但它看起来辅助注射器canot产生一个单例实例.

任何想法如何实现这个?

谢谢.

Ing*_*gel 5

如您所知,您不能使用辅助注射来创建单身人士.辅助注入适用于需要编程参数的实例,而单例不是以编程方式创建的.

除非你asEagerSingleton()在模块中调用绑定,否则懒惰构造单例.所以你可以简单地将C注入到B中,并且在创建guice注入器之后将创建C的实例.如果更多地涉及C的创建,请创建C的提供者并将其绑定在您的模块中.