首页 > 解决方案 > 如何使用 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 地图?

标签: javacdiguicehazelcasthazelcast-imap

解决方案


推荐阅读