2011-12-19 27 views
0

我有一个返回一个Map()的方法:绑定一个HashMap实例在吉斯

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

然而,我需要该调用的结果绑定到单个实例被注入到多个类。我一直在查看MapBinder的文档,但很困惑。我可能错过了简单的东西,任何人都可以协助?

杰森

回答

2

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

  1. 定义一个子类“@ Singleton公共类MyInjectedMap扩展HashMap {}“
  2. 绑定提供程序< MyInjectedMap>生成实例
+0

...或者他在打字时所说的话... – pal 2011-12-19 17:42:09

4

就实现你的模块类提供商:

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

在文档中搜索“提供者方法”以获取更多示例。如果您需要,提供者方法可以采用@Singleton注解。 – 2011-12-20 04:01:05

+0

@Darren谢谢,我只是一个Guice Newbie,所以不知道Singleton注释。我会添加这个。 – helpermethod 2011-12-20 09:53:08