我在独立的库中有一个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);
应该为您工作。