2011-03-15 21 views
7

Yay dizisi enjeksiyonu kullanarak bir HttpParams yapılandırmak istiyorum ancak HttpParams'ın iki argüman dizisi (setParameter (String name, Object object)) var. Bunu baharda yapılandırmanın bir yolu olduğunu bilen var mı?Spring: Bean'i iki bağımsız değişkenle yapılandırma

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

Teşekkür:

aklıma gelen en yakın bir listesi, Set veya Mülkiyet yapılandırmasını yapacağını gibidir!

cevap

9

Kesin olarak: İki parametreli bir ayarlayıcı bir ayarlayıcı değildir. Spring'in oluşturduğu JavaBeans sözleşmesini ihlal ediyor. Bunu çözmek için basit bir yol yoktur. Bir alternatif olarak


, burada kendi HttpParams yapılandırmak için kullanabileceğiniz bir Yardımcı sınıf Bahar ile nesnesi var: Böyle

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()); 
     } 

    } 

} 

Tel it:

<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

Teşekkürler Bahar bittikten sonra bunu yapmak için bir yol olmadığını düşündüm ne yaptık bittikten sonra gerekli bağlantı fabrika sağlayabilen bir Spring FactoryBean uygulamak olduğunu: config aşağıdaki gibi görünüyor: , httpParamFactory ile FactoryBean'ın bir örneğidir. – craftsmanadam

+0

@craftsmanadam İlk başta bunu önereceğim, ama Params nesnesini kendiniz yaratıp yaratmadığınızı bilmiyordum, bu yüzden her zaman çalışması gereken bir çözüm için gittim (ama muhtemelen daha fazla bahar gibi) –

1

Apache kullanıyorsunuz HttpClient ? Eğer öyleyse, HttpParams'ın HttpClientParams uygulaması, kullanabileceğiniz gerçek alıcılara ve ayarlayıcılara sahiptir.

Aksi takdirde, ihtiyacınız olan parametreleri içeren bir haritayı geçirebileceğiniz ve uygun bir HttpParams örneğini oluşturabileceğiniz basit bir HttpParamsFactory yazmanızı öneririm.

3

HttpConnectionParamBean ve HttpProtocolParamBean'ın tam olarak bu amaçla oluşturulduğuna inanıyorum. Documentation

İlgili konular