如
here所述,可以通过获取Guava ServiceManager
ServiceManager manager = injector.getInstance(ServiceManager.class);
为了使这项工作,我在我的Guice模块中添加了以下内容:
@Provides
public Set<Service> services(){
return ImmutableSet.<Service>of(MyService());
}
在我的主要课堂上,
ServiceManager manager = injector.getInstance(ServiceManager.class);
manager.startAsync().awaitHealthy();
如何获取已启动服务的实例?
附:将服务设置为@Singleton感觉就像一个黑客.
最佳答案 在我看来,将服务设置为@Singleton根本不是一个黑客.这可能就是我要做的.
@Provides @Singleton
public MyService myService() {
return new MyService();
}
@Provides
public Set<Service> services(MyService myService) {
return ImmutableSet.<Service>of(myService);
}
然后,您可以在任何地方注入任何您想要的特定服务实例.