簡體   English   中英

如何使用guice將此地圖作為bean注入?

[英]How to inject this map as a bean using guice?

我正在嘗試注入一個在類中使用某些靜態常量初始化的映射。

但是,由於我是Guice的新手,所以我無法繼續前進,並且我不確定如何使用此地圖? 我要注入的地圖是:

Map> MyClass中的MyMap。

我為MyInjectedMap寫了一個類,其中包含要在其中構造MyMap的類。 我編寫了一個模塊,並將該類綁定在那里。 但這是行不通的。

public class MyInjectedMap {

    private Map<String, List<String>> MyMap = new HashMap<>();

    private List<String> data = Arrays.asList("abc");

}

我想用我制作的數據數組列表填充MyMap。 我想問一下,需要在此類中編寫哪種方法,以便為我提供用於注入的MyMap?

您將需要將MyInjectedMap轉換為提供程序,然后將其適當地綁定到模塊中。 假設您不希望此地圖包含所有地圖,則將創建自定義注釋或使用guice提供的@Named:

public class MyMapProvider implements Provider<Map<String,List<String>> {
    private Map<String,List<String>> myMap = new HashMap<>();

    public Map<String,List<String>> get() {
        return myMap;
    }
}

並設置進樣器:

bind(new TypeLiteral<Map<String,List<String>>>(){}).annotatedWith(Names.named("MyMap")).toProvider(MyMapProvider.class);

然后注入:

@Inject @Named("MyMap") Map<String,List<String>> myMap;

https://github.com/google/guice/wiki/ProviderBindings

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM