java - Spring:具有两个参数 setter 的配置 Bean

标签 java spring configuration javabeans

我想使用 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/

相关文章:

java - Intellij 无法设置 VM 选项

java - 如何从 JSP 中的@ResponseBody 获取列表?

spring - Spring 中用于 websockets 测试的 MockHttpServletRequestBuilder 相当于什么

java - 如何强制 CDI/Weld 使用 new 关键字?

javascript - 如何使用 Webpack 2 将 'require' 或 'import' 插入 js 文件中?

grails - 如何在 Grails 应用程序中使用具有自己的过滤器和非 Controller servlet 的库?

java - 如何使用 Jackson 将其序列化为 xml?

java - 如何使用运行时加载的属性参数化 ehcache.xml?

java - 提供 tomcat-users.xml 时,Tomcat 镜像不会在 Docker 上启动

mysql - 如何更改 Mysql 中被视为单词字符的字符集(无需重新编译)?