java - 如何使用 Guice 将 HazelcastMap 正确注入到类中?
问题描述
我有一个名为 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.sqills.s3_ticket.service.util.NamedServiceModule.configure(NamedServiceModule.java) 为 com.sqills.s3_ticket.service.util.HazelcastService.configurationMap(HazelcastService.java:11) :10)
当我删除 hazelcastMap 注入时,注入成功。如何使用 Guice 正确注入 hazelcast 地图?