guice注入器getInstance注释的单例实例
问题描述:
我正在使用Restice和Guice。guice注入器getInstance注释的单例实例
一个CachedThreadPool的肺癌在我的吉斯:
@Provides
@Singleton
@Named("name0")
public ExecutorService provideAutoDisconnectThreadPool() {
return Executors.newCachedThreadPool();
}
本想关闭线程池当服务器停止,所以在我restlet.Application,我用注射器来获得实例:
@Override
public void stop() throws Exception {
LOGGER.info("stopping...");
// shutdown threadPool
injector.getInstance(ExecutorService.class).shutdown();
super.stop();
LOGGER.info("stopped");
}
然而,该方案得到了与错误:
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for java.util.concurrent.ExecutorService was bound.
while locating java.util.concurrent.ExecutorService
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
所以,我怎么能得到应用程序停止时的threadPool实例。
答
Named
是binding annotation,所以在这种情况下,注入键是ExecutorService.class
和@Named("name0")
:
injector.getInstance(Key.get(ExecutorService.class, Names.named("name0")))
该作品,Ť的getInstance(键 VAR1)是溶液,THX –
RTzhong