1

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

1 に答える 1

2

コンストラクターが既に定義されている場合は、デフォルトのコンストラクターを含める必要があります。

于 2012-11-28T21:00:12.087 に答える