java - 使用 Guice 的通用类型提供程序

标签 java dependency-injection guice

我正在尝试将类型化对象注入(inject)到服务类中,但得到

    com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for com.bookpac.utils.appserver.ILookup<com.bookpac.server.common.IWS> was bound.
  while locating com.bookpac.utils.appserver.ILookup<com.bookpac.server.common.IWS>
    for parameter 0 at com.bookpac.server.LookupService.<init>(LookupService.java:13)
  while locating com.bookpac.server.LookupService

要注入(inject)的字段是ILookup<IWS> lookup , 绑定(bind)是bind(ILookup.class).toProvider(LookupProvider.class)

当使用 @Provides 注释时,一切正常,有什么想法吗?

最佳答案

当您使用泛型类型时,您需要使用 TypeLiteral,例如:

bind(new TypeLiteral<ILookup<IWS>>(){}).toProvider(LookupProvider.class);

来自documentation :

Java doesn't yet provide a way to represent generic types, so this class does.

关于java - 使用 Guice 的通用类型提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071028/

相关文章:

c# - 统一: Change default lifetime manager for implicit registrations and/or disable them

c# - IServiceLocator.GetInstance(Type) 的意图与 IServiceProvider.GetService(Type) 的意图有何不同?

java - Guice:使用@Named 创建对象

java - 如何使用 log4j 配置制作 Guice 日志

java - 在 Guice 注入(inject)器内运行,@Injects 在 `new` -ed 类上不受尊重

Java:计算每秒性能

Java、Akka Actor 和有界邮箱

java - Oracle JDBC 字符集和 4000 个字符限制

java - 如何排除 Fortify 中的警告?

java - 以编程方式设置 Spring 集成路由器属性