@JsonSerialize / @JsonDeserialize не вызывается с помощью Spring MVC

У меня есть проект Spring 3.1 MVC, и у меня возникли проблемы с десериализацией запроса, отправленного следующему методу контроллера:

@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}

Объект запроса, содержащий значение Joda Money, которое я зарегистрировал пользовательский сериализатор / десериализатор для:

public class DepositRequest {
    private Money amount;
    @JsonDeserialize(using=JodaMoneyDeserializer.class)
    @JsonSerialize(using=JodaMoneySerializer.class)
    public Money getAmount() {
        return amount;
    }
    public void setAmount(Money amount) {
        this.amount = amount;
    }
}

И десериализатор:

public class JodaMoneyDeserializer extends JsonDeserializer<Money> {

    @Override
    public Money deserialize(JsonParser parser, DeserializationContext context)
            throws IOException, JsonProcessingException {
        String text = parser.getText();
        return Money.parse(text);
    }
}

Однако этот десериализатор никогда не вызывается. Когда я отправляю следующий JSON, я получаю ответ 400 - Bad Request , который, как я полагаю, указывает на то, что сопоставитель не был найден.

{
    "amount" : "30AUD"
}

Нужно ли мне как-то рассказывать Spring об этом картографе или достаточно аннотации? Какие еще шаги мне нужно предпринять, чтобы десериализация заработала?

18
задан Marty Pitt 26 January 2012 в 21:50
поделиться