如何使用Guice将HazelcastMap正确地注入类中?

时间:2018-08-02 15:30:50

标签: java cdi guice hazelcast hazelcast-imap

我有一个名为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地图?

0 个答案:

没有答案