Преобразователи сообщений по умолчанию в Spring MVC 5

Я пытаюсь понять, почему мой spring v.5.0.4-RELEASE неправильно загружает конвертеры сообщений по умолчанию. Я удалил все объявления из моего servlet.xml, и я ожидал найти все конвертеры по умолчанию, правильно загруженные из AbstractMEssageConverterMethodProcessor внутри весны, но я получаю только следующие 4:

org.springframework.http.converter.ByteArrayHttpMessageConverter@35ca138b
org.springframework.http.converter.StringHttpMessageConverter@2b755f0d
org.springframework.http.converter.xml.SourceHttpMessageConverter@74f5d717
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@6982b849

Есть какие-нибудь подсказки по этому поводу?

1 ответ

Решение

Я понял, что проблема была вызвана RequestMappingHandlerAdapter боб

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

Это было отменой значений по умолчанию Spring и публикацией четырех конвертеров, перечисленных в моем вопросе. Решением было разместить преобразователи, которые я искал, под компонентом следующим образом:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean
                        class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="autoDetectFields" value="true" />
                        <property name="autoDetectGettersSetters" value="false" />
                        <property name="objectMapper">
                            <bean class="com.mypackage.CustomMapper" />
                        </property>
                    </bean>
                </property>
            </bean>
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8</value>
                        <value>text/html</value>
                     </list>
                </property>
            </bean>
        </list>
    </property>
</bean>

Конфигурация размещена под annotation-driven был полностью проигнорирован:

<mvc:annotation-driven>
    <mvc:message-converters>
    ...
    </mvc:message-converters>
</mvc:annotation-driven>
Другие вопросы по тегам