在Guice中绑定HashMap实例

时间:2011-12-19 17:29:27

标签: java guice

我有一个返回Map()的方法:

private Map<String, Catalog> readCatalogFromXml(String xmlFile) {
    // blah blah read XML via DOM
}

但是,我需要将该调用的结果绑定到单个实例以注入多个类。我一直在查看MapBinder的文档,但很困惑。我可能错过了一些简单的事情,有人可以帮忙吗?

杰森

2 个答案:

答案 0 :(得分:4)

只需在Module类中实现一个提供程序:

public class ModuleImpl extends AbstractModule {
    @Override
    protected void configure() {
        // bind whatever needed
    }

    @Singleton
    @Provides
    Map<String, Catalog> provideMap(@XMLFile String xmlFile) {
        // create an instance of your class
        return myClass.readCatalogFromXml(xmlFile);
    }
}

答案 1 :(得分:3)

如果您只需要注入返回的地图,我会......

  1. 定义子类“@Singleton public class MyInjectedMap extends HashMap {}”
  2. 绑定提供商&lt; MyInjectedMap&gt;生成实例