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.()