1

如何配置 RESTTemplate 以使用 Jackson 的 @JsonDeserialize 反序列化响应 Json?

我的域类基于 Builder Pattern 和 jackson 的 @JsonDeserialize marshall 和 unmarshall 在单元测试中很好。但是,当与 Spring 的 RESTTemplate (Spring 3.1) 结合使用时,它会失败。

领域类:

@JsonDeserialize(builder = Policy.Builder.class)
public final class Policy 实现 Comparable, Serializable {

    // 不可变属性

    私人政策(建造者建造者){
        ...
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    公共静态类生成器{

        /// 使用XXX方法

        公共政策构建(){
            返回新政策(本);
        }
    }
}

单元测试中的 Spring RESTTemplate 代码:

策略策略 = new Policy.Builder().withXXX()...build();
restTemplate.postForObject("http://localhost:8080/policies/policy.json", policy, String.class);

RestTemplate#doExecute() 中的错误 - 第 436 行:

org.springframework.web.client.HttpServerErrorException:500 无法实例化 bean    
类 [xxx.domain.Policy]:未找到默认构造函数;嵌套异常是
java.lang.NoSuchMethodException: xxx.domain.Policy.()
4

1 回答 1

2

如果已经定义了构造函数,则需要包含默认构造函数。

于 2012-11-28T21:00:12.087 回答