我想使用 spring setter 注入(inject)配置 HttpParams,但 HttpParams 有两个参数 setter ( setParameter(String name, Object object) )。有人知道在 spring 中配置它的方法吗?
我能想到的最接近的是像你做一个 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>
关于java - Spring:具有两个参数 setter 的配置 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312605/