Я не могу оставить комментарий, так что это мой ответ: (? Wich результата вы прицеливание)
Как Адам B сказал, может быть, вы можете использовать пружинные профили для достижения результата вы стремитесь.
Другая вещь, которую вы можете сделать, это:
настроить отображение (с помощью пружины UTIL пространства имен) в конфигурации контекста XML, как это:
<util:map id="mapId" key-type="java.lang.String" value-type="com.xxx.interface-or-superclass">
<beans:entry key="${property.bean.name.1}" value-ref="bean1-defined-elsewehere"/>
<beans:entry key="${property.bean.name.2}" value-ref="bean2-defined-elsewehere"/>
<beans:entry key="${property.bean.name.3}" value-ref="bean3-defined-elsewehere"/>
</util:map>
, то вы можете загрузить эту карту в бобе под названием например. "Com.xxx.BeanSelector"
@Value("#{mapId}")
private Map<String, com.xxx.interface-or-superclass> myMap;
и добавить к этому боба в Митос так:
public interface-or-superclass getBean(String beanName){
return myMap.get(beanName);
}
ОК теперь вы можете иметь свой окончательный класс, похожий на этот:
@Autowired
private BeanSelector beanSelector;
@Value("${property.name.the.bean.you.want.to.use}")
private String beanName;
private interface-or-superclass myBean;
то вы можете istantiate myBean (возможно, внутри метода afterPropertiesSet(), если вы реализуете интерфейс InitializingBean)
таким образом:
myBean = beanSelector.getBean(beanName);
// then check ifthe bean is not null or something like that
Хорошо это немного грязный и, возможно, вы можете действовать по-другому на основе чего вы хотите достичь, но это временное решение.
Хорошее обходное решение зависит от вашей общей цели. Итак, какую общую проблему вы хотите решить? – Ralph
Я использую Spring 3 ProprtySource, чтобы передать имя компонента в контекст при его загрузке. Это ключ: имя компонента должно быть передано в контексте приложения в качестве аргумента. Аргумент признается аннотацией @Value, но не Qualifier. – user1052610
Но почему? Возможно, есть более подходящие альтернативы вашей цели. Если бы мне пришлось сделать слепое предположение, похоже, что профили фасоли Spring 3.1 могут подойти к тому, к чему вы стремитесь. –