java - 为什么 spring 不使用我的构造函数来初始化这个 bean(Map 参数)

标签 java spring jackson

我有一个 spring beans 配置文件,其中我将以下 jackson 类定义为 spring beans。
由于某种原因,在运行时 filterProvider bean 会在没有映射参数的情况下实例化。
docs可以看到SimpleFilterProvider 确实有这样的构造函数,并且 SimpleBeanPropertyFilter 实现了 BeanPropertyFilter

<bean id="productAttributesAndAdvertiserNameFilter" class="org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter" factory-method="filterOutAllExcept">
        <constructor-arg value="name"/>
    </bean>
    <bean id="offerIdFilter" class="org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter" factory-method="filterOutAllExcept">
        <constructor-arg value="id"/>
    </bean>
    <bean id="filterProvider" class="org.codehaus.jackson.map.ser.impl.SimpleFilterProvider">
        <constructor-arg>
            <util:map value-type="org.codehaus.jackson.map.ser.BeanPropertyFilter">
                <entry key="onlyNameFilter" value-ref="productAttributesAndAdvertiserNameFilter" />
                <entry key="onlyIdFilter" value-ref="offerIdFilter" />
            </util:map>
        </constructor-arg>
    </bean>

更新:
从 Jackson 1.9.5 开始,此问题已修复(感谢 Tatu)

如有任何帮助,我们将不胜感激。

最佳答案

您似乎在 SimpleFilterProvider 中发现了一个错误。

我刚刚下载了最新的源代码(1.9.4),构造函数的定义如下:

public SimpleFilterProvider() {
    _filtersById = new HashMap<String,BeanPropertyFilter>();
}

/**
 * @param mapping Mapping from id to filter; used as is, no copy is made.
 */
public SimpleFilterProvider(Map<String,BeanPropertyFilter> mapping) {
    _filtersById = new HashMap<String,BeanPropertyFilter>();
}

采用映射的构造函数忽略它......(即javadoc不正确)

关于java - 为什么 spring 不使用我的构造函数来初始化这个 bean(Map 参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062618/

相关文章:

java - cassandra 3 在启动期间在 debian docker 容器中抛出 Snitch 类异常

java - 如何在 Java 中比较字符串?

java - Hibernate/Spring Data JPA 无法在 Spring Boot 应用程序中识别 WITHIN 关键字

java - 使用 Jackson 从 JSON 数组中检索字符串

java - Jackson注释来覆盖父类中的注释

java - else if 语句内的 for 循环

java - 为什么我的静态 block 允许在不使用父类引用的情况下调用父类静态方法?

spring - Thymeleaf 无法加载静态资源

java - 如何使用不同的 spring 上下文为 junit 集成测试创建同一对象的多个实例?

java - 使用 Jackson 解压缩时出现 json 解析器异常