2011-03-15 49 views

回答

9

嚴格來說:有兩個參數的setter不是setter。它違反了Spring構建的JavaBeans約定。沒有簡單的方法來解決這個問題。


作爲替代,這裏是你可以用它來配置你的HttpParams一個助手類對象與Spring:

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

謝謝我認爲沒有辦法單純使用spring,我們最終做的是實現一個Spring FactoryBean,它可以提供必要的連接工廠,然後配置如下所示:,httpParamFactory是我們FactoryBean的一個實例。 – craftsmanadam 2011-03-15 15:17:27

+0

@craftsmanadam我最初會建議,但是我不知道你是否自己創建了Params對象,所以我選擇了一個應該始終工作的解決方案(但是你的可能更像彈簧) – 2011-03-15 17:04:59

1

你使用Apache的HttpClient ?如果是這樣,那麼HttpParams的HttpClientParams實現就有可以使用的真正的getter和setter。否則,我會建議編寫一個簡單的HttpParamsFactory,您可以傳遞包含您需要的參數的映射並構造一個適當的HttpParams實例。