2011-12-19 58 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