Ich kann keinen Kommentar abgegeben so dass diese meine Antwort ist: (? Wich Ergebnis streben Sie)
Als Adam B vielleicht gesagt, Sie Federprofile verwenden können, das Ergebnis Sie streben zu erreichen.
Eine andere Sache, die Sie tun können, ist:
configure eine Karte in Ihrem XML-Kontextkonfiguration wie folgt aus (die Feder util-Namespace):
<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>
dann können Sie diese Karte in einer Bohne laden genannt z.B. "Com.xxx.BeanSelector"
@Value("#{mapId}")
private Map<String, com.xxx.interface-or-superclass> myMap;
und auf diese Bohne ein methos wie folgt hinzu:
public interface-or-superclass getBean(String beanName){
return myMap.get(beanName);
}
ok jetzt können Sie Ihre letzte Klasse ähnlich wie diese haben:
@Autowired
private BeanSelector beanSelector;
@Value("${property.name.the.bean.you.want.to.use}")
private String beanName;
private interface-or-superclass myBean;
Dann können Sie myBean (möglicherweise innerhalb der Methode afterPropertiesSet(), wenn Sie die Schnittstelle InitializingBean implementieren)
auf diese Weise:
myBean = beanSelector.getBean(beanName);
// then check ifthe bean is not null or something like that
Ok es ist ein wenig chaotisch und vielleicht können Sie auf eine andere Weise wirken auf das, was Sie erreichen wollen, aber es ist eine Abhilfe.
Eine gute Problemumgehung hängt von Ihrem Gesamtziel ab. Welches allgemeine Problem möchten Sie lösen? – Ralph
Ich verwende eine Spring 3 ProprtySource, um den Namen der Bean an den Kontext zu übergeben, wenn sie geladen wird. Dies ist der Schlüssel: Der Bean-Name muss als Argument in den Anwendungskontext übergeben werden. Das Argument wird von der Annotation @Value erkannt, nicht jedoch von Qualifier. – user1052610
Aber warum? Es könnte sein, dass es bessere Alternativen zu Ihrem Ziel gibt. Wenn ich eine blinde Vermutung anstellen sollte, klingt es so, als ob die Bean-Profile von Spring 3.1 zu dem passen, was Sie anstreben. –