Java Guice:在不使用@singleton或修改实现的情况下配置singleton

Java Guice:在不使用@singleton或修改实现的情况下配置singleton,java,binding,singleton,guice,Java,Binding,Singleton,Guice,我在一个独立的库中有一个Service接口和serviceinpl实现类,我不想对Guice有任何依赖 然而,我在一个使用服务的应用程序中使用Guice。在这个应用程序中,我想将Service绑定到ServiceImpl,我想ServiceImpl成为一个单例 通常我会用@Singleton注释serviceinpl,然后像这样绑定 bind(Service.class).to(ServiceImpl.class); 但是由于ServiceImpl不依赖于Guice,因此我无法添加注释,或者用

我在一个独立的库中有一个
Service
接口和
serviceinpl
实现类,我不想对Guice有任何依赖

然而,我在一个使用
服务的应用程序中使用Guice。在这个应用程序中,我想将
Service
绑定到
ServiceImpl
,我想
ServiceImpl
成为一个单例

通常我会用
@Singleton
注释
serviceinpl
,然后像这样绑定

bind(Service.class).to(ServiceImpl.class);
但是由于
ServiceImpl
不依赖于Guice,因此我无法添加注释,或者用任何Guicy修改其源代码

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

请参阅:

范围

Guice使用注释来标识作用域。通过将范围注释应用于实现类来指定类型的范围

也可以在bind语句中配置作用域:

bind(Service.class).to(serviceinpl.class).in(Singleton.class)应该适合您