欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot springmvc 配置messageConverter(StringHttpMessageConverter)不生效原因解决

程序员文章站 2022-07-12 19:42:00
...

解决方法一:不推荐

解决方法如下,因为如果不设置register-default='false'Spring 会默认帮我们注册7个messageConvert 如下图

    <bean id="messageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
        <constructor-arg value="UTF-8"></constructor-arg>
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <mvc:annotation-driven enable-matrix-variables="true" content-negotiation-manager="contentNegotiationManager">
        <mvc:message-converters register-defaults="false">
            <ref bean="messageConverter"></ref>
        </mvc:message-converters>
    </mvc:annotation-driven>

 

如下图所示,而且StringHttpMessageConverter,网上有人说,需要把mvc:annotation注解移动到最后,也有人说,messageConverter需要在mvc-converter之前注入SPring容器,众说纷纭,不妨试试我这种方法,我的理解应该是,Spring会帮我们注入一些默认的,但是这些并不是我们需要的,而且我们在配置的时候,没有及时的覆盖掉Spring默认配置的。所以会造成配置之后无效果的问题。笔者Spring版本为5.0.3

Springboot springmvc 配置messageConverter(StringHttpMessageConverter)不生效原因解决

maven依赖如下

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.3.RELEASE</version>
        </dependency>

 

<mvc:annotation-driven enable-matrix-variables="true" content-negotiation-manager="contentNegotiationManager">
    <mvc:message-converters register-defaults="false">
        <ref bean="messageConverter"></ref>
        <ref bean="jackson2HttpMessageConverter"></ref>
    </mvc:message-converters>
    <mvc:path-matching path-helper="mph"></mvc:path-matching>
</mvc:annotation-driven>

方法2 ,看看你的文件字符编码是否正确?

比如有的文件是GBK,有的文件是UTF-8,这种情,无论怎么改都会乱码的。