2012-11-19 43 views
1

如何配置RESTTemplate以反序列化響應Json使用Jackson的@JsonDeserialize?如何使用Builder Pattern和@JsonDeserialize反編譯Spring RestTemplate響應json

我的領域類基於Builder模式和傑克遜的@JsonDeserialize馬歇爾和單位測試unmarshall罰款。但是,當與Spring的RESTTemplate(Spring 3.1)結合使用時,它會失敗。

域類:

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

    // immutable attributes 

    private Policy(Builder builder) { 
     ... 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class Builder { 

     /// withXXX methods 

     public Policy build() { 
      return new Policy(this); 
     } 
    } 
} 

彈簧RESTTemplate代碼在單元測試:在RestTemplate#doExecute()

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

錯誤 - 線436:

 
org.springframework.web.client.HttpServerErrorException: 500 Could not instantiate bean  
class [xxx.domain.Policy]: No default constructor found; nested exception is 
java.lang.NoSuchMethodException: xxx.domain.Policy.() 

回答

1

如果一個構造爲已經定義你需要包含默認的構造函數。

相關問題