我在独立的库中有一个Service接口和ServiceImpl实现类,我不想与Guice有任何依赖关系。

但是我在使用Service的应用程序中使用Guice。在这个应用程序中,我想将Service绑定到ServiceImpl,并且我希望ServiceImpl是单例。

通常,我可以通过用ServiceImpl注释@Singleton然后像这样进行绑定来做到这一点

bind(Service.class).to(ServiceImpl.class);


但是由于ServiceImpl不依赖Guice,所以我不能添加注释,也不能用任何Guicy修改其源代码。

我可以在应用程序的模块中将Service绑定到ServiceImpl,但是我不清楚如何将ServiceImpl配置为应用程序模块中“外部”的单例(或其他方式)。

最佳答案

参见:https://github.com/google/guice/wiki/Scopes


  范围
  
  Guice使用注释来标识范围。通过将范围注释应用于实现类,为类型指定范围。
  
  范围也可以在bind语句中配置:


bind(Service.class).to(ServiceImpl.class).in(Singleton.class);应该为您工作。

09-27 06:29