我有一个名为NamedService的标准CDI bean;
@Named
public class NamedService {
@com.google.inject.Inject
private HazelcastService hazelcastService;
public void writeSomething() {
if (hazelcastService != null) {
System.out.println("injected properly.");
} else {
System.out.println("hazelcastService null");
}
}
}
注入HazelcastService;
@Named
public class HazelcastService {
@Inject
@HazelcastMap(name = CacheConstants.CONFIGURATION_MAP)
protected IMap<String, String> configurationMap;
}
它们绑定在指定的Module类中:
public class NamedServiceModule extends AbstractModule {
@Override
public void configure() {
bind(NamedService.class);
bind(HazelcastService.class);
}
}
当我尝试查看hazelcastMap是否正确注入时,它会引发异常;
public class TestGuice {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new NamedServiceModule());
NamedService namedService = injector.getInstance(NamedService.class);
namedService.writeSomething();
}
}
线程“ main”中的com.google.inject.CreationException异常:无法 创建注射器,请参见以下错误:
1)com.hazelcast.core.IMap的实现未绑定。定位时 com.hazelcast.core.IMap 用于com.sqills.s3_ticket.service.util.HazelcastService.configurationMap(HazelcastService.java:11)上的字段 在 com.sqills.s3_ticket.service.util.NamedServiceModule.configure(NamedServiceModule.java:10)
当我删除hazelcastMap注入时,则注入成功。如何使用Guice正确注入该hazelcast地图?