तो यह मेरा जवाब है मैं एक टिप्पणी छोड़ नहीं कर सकते हैं: (? जो परिणाम आप लक्ष्य कर रहे हैं)
के रूप में एडम बी ने कहा कि हो सकता है आप परिणाम आप के लिए लक्ष्य कर रहे हैं प्राप्त करने के लिए वसंत प्रोफ़ाइल का उपयोग कर सकते हैं। एक नक्शा इस तरह अपने xml संदर्भ विन्यास में (नाम स्थान util वसंत का प्रयोग करके)
कॉन्फ़िगर:
एक और बात आप कर सकते है
<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;
और इस तरह एक methos इस सेम में जोड़ें:
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;
तो आप MyBean (शायद बाद में विधि के अंदर विधि के अंदर) अगर आप इंटरफ़ेस को कार्यान्वित कर रहे हैं, तो अंदरूनीकरण बीन)
इस तरह से:
myBean = beanSelector.getBean(beanName);
// then check ifthe bean is not null or something like that
ठीक है यह थोड़ा जटिल है और हो सकता है आप आप क्या हासिल करना चाहता हूँ के आधार पर एक अलग तरह से कार्य कर सकते हैं, लेकिन यह एक समाधान है।
स्रोत
2013-08-13 18:41:37
एक अच्छा कामकाज आपके समग्र लक्ष्य पर निर्भर करता है। तो आप किस सामान्य समस्या को हल करना चाहते हैं? – Ralph
मैं लोड होने पर संदर्भ में बीन के नाम को पारित करने के लिए एक स्प्रिंग 3 ProprtySource का उपयोग कर रहा हूं। यह कुंजी है: बीन नाम को एप्लिकेशन संदर्भ में एक तर्क के रूप में पारित किया जाना चाहिए। तर्क @Value एनोटेशन द्वारा पहचाना जाता है, लेकिन क्वालीफायर द्वारा नहीं। – user1052610
लेकिन क्यों? यह आपके लक्ष्य के लिए बेहतर अनुकूल विकल्प हो सकता है। अगर मुझे अंधेरा अनुमान लगाना पड़ा तो ऐसा लगता है कि स्प्रिंग 3.1 की बीन प्रोफाइल आपके लिए लक्षित हो सकती है। –