У меня есть этот класс:
public class CompositeSecurityAuthorizer implements SecurityAuthorizer {
@inject @CompositeSecurityAuthorizerAnnot
List<SecurityAuthorizer> authorizers; //Field Injection
}
Я хочу ввести в поле authorizers
значение List<SecurityAuthorizer>
.
В моем модуле у меня есть следующее:
@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
к этому List<SecurityAuthorizer>
:
- Как мне убедиться, что это тот же экземпляр, что и другие ссылки
StoreAuthorizer
? - Это что-то, что Guice просто делает под капотом, так что
new StoreAuthorizer()
действительно вызывает impl getInstance()
за кулисами?