2010-08-31 14 views
18

मैं तो मैं इसे एक निर्माता है कि इस तरह की घोषणा की है करने के लिए इंजेक्षन कर सकते हैं एक स्प्रिंग संदर्भ फ़ाइल में ऑब्जेक्ट की श्रृंखला बनाने के लिए कोशिश कर रहा हूँ:एक वसंत सेम संदर्भ में ऑब्जेक्ट की श्रृंखला की घोषणा

public RandomGeocodingService(GeocodingService... services) { } 

मैं

<bean id="googleGeocodingService" class="geocoding.GoogleGeocodingService"> 
<constructor-arg ref="proxy" /> 
<constructor-arg value="" /> 
</bean> 

<bean id="geocodingService" class="geocoding.RandomGeocodingService"> 
    <constructor-arg> 
     <array value-type="geocoding.GeocodingService"> 
      <!-- How do I reference the google geocoding service here? --> 
     </array> 
    </constructor-arg> 
</bean> 

मैं ऐसा करने के तरीके पर दस्तावेज में एक उदाहरण या में कुछ ढूँढने में सक्षम नहीं किया गया है: <array> टैग का उपयोग करने की कोशिश कर रहा हूँ। इसके अलावा, आपके पास क्या करने की कोशिश कर रहा है, उसे समझने के बेहतर तरीके के लिए आपके पास कोई सुझाव है, कृपया मुझे बताएं :)।

+1

आप एक सूची का उपयोग कर सकते हैं? – Zoidberg

उत्तर

30

ऐसा इसलिए है क्योंकि वहाँ <array> जैसी कोई चीज नहीं है, वहाँ केवल <list> है।

अच्छी खबर यह है कि वसंत सूचियों और सरणी के बीच स्वत: रूपांतरित हो जाएगा, इसलिए आपकी सरणी को <list> के रूप में परिभाषित किया गया है, और वसंत इसे आपके लिए एक सरणी में जोड़ देगा।

यह काम करना चाहिए:

<bean id="googleGeocodingService" class="geocoding.GoogleGeocodingService"> 
    <constructor-arg ref="proxy" /> 
    <constructor-arg value="" /> 
</bean> 

<bean id="geocodingService" class="geocoding.RandomGeocodingService"> 
    <constructor-arg> 
     <list> 
      <ref bean="googleGeocodingService"/> 
     </list> 
    </constructor-arg> 
</bean> 

वसंत भी एक सूची में एक भी सेम विवश होगा, यदि आवश्यक हो:

<bean id="geocodingService" class="geocoding.RandomGeocodingService"> 
    <constructor-arg> 
     <ref bean="googleGeocodingService"/> 
    </constructor-arg> 
</bean> 
0

मुझे पता है क्यों उपयोगकर्ता के लिए जो सबसे अच्छा जवाब दिया कहते हैं चाहते हैं की जाँच ...

"ऐसा इसलिए है क्योंकि <array> जैसी कोई चीज़ नहीं है, केवल <list>"

मैं वर्तमान में <array> टैग का उपयोग कर रहा हूं ताकि वस्तुओं को एक बीन में इंजेक्ट किया जा सके।

निम्नलिखित कोड पर एक नज़र डालें ...

<bean id="song1" class="mx.com.company.songs.Song"> 
     <property name="name" value="Have you ever seen the rain?"/>   
    </bean> 

    <bean id="song2" class="mx.com.company.songs.Song"> 
     <property name="name" value="La bamba"/>  
    </bean> 

    <bean id="guitarPlayer" class="mx.com.company.musician.GuitarPlayer"> 
     <property name="songs"> 
      <array> 
       <ref bean="song1"/> 
       <ref bean="song2"/> 
      </array> 
     </property> 
    </bean> 
संबंधित मुद्दे