2011-03-15 86 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实例。