在Guice FAQ中,他们讨论了使用注释区分多个实例(种类)。
我的问题:我可以在没有注释的情况下将Impl绑定到接口,并使用注释将另一个Impl绑定到同一个接口吗?基本上我的第一个impl将作为其他人的容器。
bind(SecurityAuthorizer.class).to(CompositeSecurityAuthorizer.class);
bind(SecurityAuthorizer.class)
.annotatedWith(Names.named(ComponentAuthorizer.class.getSimpleName()))
.to(ComponentAuthorizer.class).in(Singleton.class);
奖金问题,我们对Names.named(..)的使用被认为是不好的形式?只是试图避免创建大量的注释类,但希望能够重构的好处。
答案 0 :(得分:1)
public class CompositeSecurityAuthorizer {
@Inject
CompositeSecurityAuthorizer(Set<SecurityAuthorizer> authorizers) {
...
}
}