Java Guice MapBinder:如何绑定地图<;字符串,Hashset>;在Guice中使用providesIntoSet?

Java Guice MapBinder:如何绑定地图<;字符串,Hashset>;在Guice中使用providesIntoSet?,java,guice,Java,Guice,尝试以下建议: private class TestModule extends AbstractModule { @Override public void configure() { MapBinder<String, Set<Filter>> filterBinder = MapBinder.newMapBinder(binder(), new TypeLiteral<String>(){}, new TypeLiter

尝试以下建议:

private class TestModule extends AbstractModule {

    @Override
    public void configure() {
        MapBinder<String, Set<Filter>> filterBinder = MapBinder.newMapBinder(binder(), new TypeLiteral<String>(){}, new TypeLiteral<Set<Filter>>(){});
        filterBinder.addBinding("firstKeyInMap").to(Key.get(new TypeLiteral<Set<Filter>>(){}, Names.named("Filters")));
    }

    @ProvidesIntoSet
    @Named("Filters")
    public Filter getFilter1() {
        return mock(Filter1.class);
    }

    @ProvidesIntoSet
    @Named("Filters")
    public Filter Filter2() {
        return mock(Filter2.class);
    }

}
私有类TestModule扩展了AbstractModule{
@凌驾
public void configure(){
MapBinder filterBinder=MapBinder.newMapBinder(binder(),new TypeLiteral(){},new TypeLiteral(){});
filterBinder.addBinding(“firstKeyInMap”).to(Key.get(new-TypeLiteral(){},Names.named(“Filters”));
}
@ProvidesIntoSet
@命名(“过滤器”)
公共筛选器getFilter1(){
返回mock(Filter1.class);
}
@ProvidesIntoSet
@命名(“过滤器”)
公共过滤器2(){
返回mock(Filter2.class);
}
}
遗憾的是,我有一个错误。有什么线索可以纠正吗

com.google.inject.CreationException:无法创建注入器,请参阅以下错误:

未绑定使用@com.google.inject.name.Named(value=Filters)注释的java.util.Set实现


错误是Guice无法找到集合的实现。问题在于@ProvidesIntoSet

浏览了一些web资源并从中找到以下语句

可以使用@ProvidesIntoSet或@ProvidesIntoMap通过安装MultiBindingsCanner绑定Multibinder或MapBinder项

我看到MultiBindingsCanner模块功能将在java文档中默认实现。我不知道为什么我需要安装这个明确。顺便说一句,我使用的是Guice 4.0

安装了MultiBindingScanner,一切都很顺利