Получение экземпляра в модуле Guice

У меня есть этот класс:

public class CompositeSecurityAuthorizer implements SecurityAuthorizer {
    @inject @CompositeSecurityAuthorizerAnnot
    List<SecurityAuthorizer> authorizers; //Field Injection
}

Я хочу ввести в поле авторизаторов значение List .

В моем модуле, У меня есть следующее:

@Override
protected void configure() {
  bind(CompositeSecurityAuthorizer.class).in(Singleton.class);
  bind(StoreAuthorizer.class).in(Singleton.class);
  bind(SecurityAuthorizer.class)
      .annotatedWith(CompositeSecurityAuthorizerAnnot.class)
      .to(CompositeSecurityAuthorizer.class);
}

@Provides @CompositeSecurityAuthorizerAnnot
List<SecurityAuthorizer> provideAuthorizersList()
{
    List<SecurityAuthorizer> authList = new ArrayList<SecurityAuthorizer>();
    //How do I add StoreAuthorizer while maintaining a Singleton?
    //Will the line below do it through Guice magic?
    //authList.add(new StoreAuthorizer());
    return authList;
}

Мой вопрос встроен в комментарии к коду. Когда я добавляю StoreAuthorizer в этот список :

  • Как мне убедиться, что это тот же экземпляр, что и другие ссылки StoreAuthorizer ?
  • Это то, что Guice делает под капотом? так что new StoreAuthorizer () действительно вызывает имплантацию getInstance () за кулисами?
5
задан Snekse 16 March 2011 в 18:02
поделиться