簡體   English   中英

Spring:使用兩個參數setter配置Bean

[英]Spring: Configuring Bean with a two argument setter

我想使用spring setter注入配置HttpParams,但是HttpParams有一個兩個參數setter(setParameter(String name,Object object))。 有人知道在春天配置這個的方法嗎?

我能想到的最接近的就是你會做List,Set或Property配置:

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

謝謝!

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


作為替代方案,這里有一個Helper類,您可以使用它來配置Spring的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>

我相信HttpConnectionParamBean和HttpProtocolParamBean是為了這個目的而創建的。 文檔 示例

你在使用Apache HttpClient嗎? 如果是這樣,HttpParams的HttpClientParams實現有你可以使用的真正的getter和setter。

否則,我建議編寫一個簡單的HttpParamsFactory,你可以傳遞一個包含你需要的參數的地圖,並構建一個適當的HttpParams實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM