Spring: Конфигурирование Bean с помощью установщика с двумя аргументами - PullRequest
7 голосов
/ 15 марта 2011

Я хотел бы настроить HttpParams с помощью инжектора установщика пружины, но HttpParams имеет установщик с двумя аргументами (setParameter (String name, Object object)). Кто-нибудь знает способ настроить это весной?

Самое близкое, что я могу придумать, это то, как если бы вы выполнили настройку списка, набора или свойства:

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

Спасибо!

Ответы [ 3 ]

9 голосов
/ 15 марта 2011

Строго говоря: сеттер с двумя параметрами не является сеттером.Это нарушает соглашение JavaBeans, на котором основывается Spring.Нет простого способа решить эту проблему.


В качестве альтернативы вот класс Helper, который вы можете использовать для настройки объекта 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>
3 голосов
/ 06 сентября 2012

Я считаю, что HttpConnectionParamBean и HttpProtocolParamBean были созданы именно для этой цели. Документация Пример

1 голос
/ 15 марта 2011

Используете ли вы Apache HttpClient?Если это так, реализация HttpClientParams в HttpParams имеет реальные геттеры и сеттеры, которые вы можете использовать.

В противном случае я бы предложил написать простую HttpParamsFactory, в которой вы могли бы передать карту, содержащую необходимые параметры, и создать соответствующийэкземпляр HttpParams.

...