У меня есть отношение компонент-субкомпонент.Каждый из них имеет различную область действия и использует свой собственный модуль, который обеспечивает зависимость того же типа.Что мне нужно, это различные экземпляры объекта в зависимости от области видимости.Кинжал не допустит этого, так как у меня будут «множественные привязки».Как бы я решил проблему без @ Named-Qualifiers?Например, есть ли способ перезаписи в подкомпоненте?
//Higher scoped object (in component)
@Provides
@ClientScope
ISupResRankStrategy iSupResRankStrategy(@Named("GlobalModelConfig") JsonNode configSubTree,
Lazy<SortByMagnitudeSum> strat1,
Lazy<SortByShadowPercentage> strat2) {
@SuppressWarnings("rawtypes")
Map<String, Lazy> availableStrategies = new HashMap<>();
availableStrategies.put(SortByMagnitudeSum.class.getSimpleName(), strat1);
availableStrategies.put(SortByShadowPercentage.class.getSimpleName(), strat2);
String configuredStrategy = configSubTree.findValue("ISupResRankStrategy").asText();
return (ISupResRankStrategy) availableStrategies.get(configuredStrategy).get();
}
//lower scoped object (in subcomponent)
@Provides
@ModelScope
ISupResRankStrategy iSupResRankStrategy(@Named("TradeModelConfig") JsonNode configSubTree,
Lazy<SortByMagnitudeSum> strat1,
Lazy<SortByShadowPercentage> strat2) {
@SuppressWarnings("rawtypes")
Map<String, Lazy> availableStrategies = new HashMap<>();
availableStrategies.put(SortByMagnitudeSum.class.getSimpleName(), strat1);
availableStrategies.put(SortByShadowPercentage.class.getSimpleName(), strat2);
String configuredStrategy = configSubTree.findValue("ISupResRankStrategy").asText();
return (ISupResRankStrategy) availableStrategies.get(configuredStrategy).get();
}