Jackson の @JsonDeserialize を使用してレスポンス Json を逆シリアル化するように RESTTemplate を構成するにはどうすればよいですか?
Builder パターンと jackson の @JsonDeserialize に基づく私のドメイン クラスは、単体テストで適切にマーシャリングとアンマーシャリングを行います。ただし、Spring の RESTTemplate (Spring 3.1) と組み合わせて使用すると失敗します。
ドメイン クラス:
@JsonDeserialize(builder = Policy.Builder.class)
public final class ポリシーは、Comparable、Serializable を実装します {
// 不変属性
プライベート ポリシー(ビルダー ビルダー) {
...
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Builder {
/// withXXX メソッド
公共政策ビルド() {
新しいポリシー(これ)を返します。
}
}
}
単体テストの Spring RESTTemplate コード:
ポリシー policy = new Policy.Builder().withXXX()...build();
restTemplate.postForObject("http://localhost:8080/policies/policy.json", ポリシー, String.class);
RestTemplate#doExecute() のエラー - 436 行目:
org.springframework.web.client.HttpServerErrorException: 500 Bean をインスタンス化できませんでした クラス [xxx.domain.Policy]: デフォルトのコンストラクターが見つかりません。ネストされた例外は java.lang.NoSuchMethodException: xxx.domain.Policy.()