2011-03-15 15 views
7

साथ बीन का विन्यास मैं वसंत सेटर इंजेक्शन का उपयोग कर एक HttpParams कॉन्फ़िगर करने के लिए चाहते हैं लेकिन HttpParams एक दो तर्क सेटर (setParameter (स्ट्रिंग नाम, वस्तु वस्तु)) है। क्या किसी को बसंत में इसे कॉन्फ़िगर करने के तरीके से अवगत है?स्प्रिंग: एक दो तर्क सेटर

http://www.mkyong.com/spring/spring-collections-list-set-map-and-properties-example/

धन्यवाद:

निकटतम मैं के बारे में सोच सकते हैं

की तरह आप एक सूची, सेट, या संपत्ति विन्यास करना होगा है!

उत्तर

9

सच पूछिये तो: दो पैरामीटर के साथ एक सेटर एक सेटर नहीं है। यह जावाबींस सम्मेलन का उल्लंघन करता है, जिस पर वसंत बनाता है। इसे हल करने का कोई आसान तरीका नहीं है।


एक विकल्प के रूप में, यहाँ एक सहायक वर्ग आप अपने HttpParams कॉन्फ़िगर करने के लिए उपयोग कर सकते हैं वसंत के साथ वस्तु है:

public class HttpParamSetter{ 

    private HttpParams httpParams; 

    public void setHttpParams(HttpParams httpParams){ 
     this.httpParams = httpParams; 
    } 

    private Map<String, Object> parameters; 

    public void setParameters(Map<String, Object> parameters){ 
     this.parameters = parameters; 
    } 

    @PostConstruct 
    public void applyParameters(){ 
     for(Entry<String, Object> entry:parameters.entrySet()){ 
      httpParams.setParameter(entry.getKey(), entry.getValue()); 
     } 

    } 

} 

तार यह इस तरह:

<bean class="com.yourcompany.HttpParamSetter"> 
    <property name="httpParams" ref="httpParams" /> 
    <property name="parameters"> 
     <map> 
      <entry key="foo" value="bar" /> 
      <entry key="baz" value="phleem" /> 
     </map> 
    </property> 
</bean> 
+1

धन्यवाद मैंने सोचा था कि वहाँ विशुद्ध रूप से वसंत तो config की तरह लग रहा है कि हम क्या कर एक स्प्रिंग FactoryBean कि आवश्यक कनेक्शन कारखाना आपूर्ति कर सकते हैं लागू कर रहा है समाप्त हो गया का उपयोग कर यह करने के लिए एक तरह से नहीं था: <सेम वर्ग = "org। apache.http.impl.client.DefaultHttpClient "><निर्माता-आर्ग सूचकांक = 'ओ' रेफरी =" httpParamFactory "/> httpParamFactory हमारे FactoryBean का एक उदाहरण होने के साथ। – craftsmanadam

+0

@ क्राफ्ट्सडमडम मैं शुरुआत में यह सुझाव देने जा रहा था, लेकिन मुझे नहीं पता था कि आपने पैराम्स ऑब्जेक्ट स्वयं बनाया है, इसलिए मैं ऐसे समाधान के लिए गया जो हमेशा काम करना चाहिए (लेकिन आपका शायद अधिक वसंत जैसा है) –

1

आप अपाचे का उपयोग कर रहे HttpClient ? यदि ऐसा है, तो HttpPientams के HttpClientParams कार्यान्वयन में वास्तविक गेटर्स और सेटर्स हैं जिनका आप उपयोग कर सकते हैं।

अन्यथा, मैं एक साधारण HttpParamsFactory कि आप एक नक्शा है कि मानकों की जरूरत शामिल गुजरती हैं और HttpParams का एक उपयुक्त उदाहरण का निर्माण कर सकता है लेखन सुझाव देना चाहेंगे।

3

मैं HttpConnectionParamBean विश्वास करते हैं और HttpProtocolParamBean ठीक इस उद्देश्य के लिए बनाया गया था। DocumentationExample

संबंधित मुद्दे