Мой проект Spring 3.1 с пользовательским HttpMessageConverter, указанным так:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="myproject.MyCustomHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
Это работает, так как я могу преобразовать возвращаемые значения, помеченные @ResponseBody, в соответствующие значения. Однако, когда возвращаемое значение метода является объектом String , мой пользовательский конвертер сообщений не будет вызываться (конвертеры по умолчанию, кажется, обрабатывают его, отображают строку как ответ напрямую).
Это может быть решено, если я включу register-defaults = "false" как это:
<mvc:annotation-driven register-defaults="false">
<mvc:message-converters>
<bean class="myproject.MyCustomHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
Это поведение не согласуется с тем, что упомянуто в этом сообщении блога в springsource , в котором говорится: "Список преобразователей сообщений, предоставляемых таким образом, имеет приоритет над преобразователями сообщений, которые регистры пространства имен MVC по умолчанию ".
Есть идеи?