使用springmvc时提高@ResponseBody API的效率

已有 6222人阅读此文 - - 经验分享

    在使用springmvc 的注解@ResponseBody时,默认情况下,spring会打印出所有的可能的编码方式如下图:

22.jpg

1

所有的编码都在Accept-Charset中,这个值一般在2K-4K之间,可以想像如果每次请求api都要返回如此大的数据,api的请求效率肯定是很低的,如果是提供给手机端的API,那你的客户端的是很耗流量的,打开 速度也相对会慢很多,这是无法忍受的。

 

那解决方案是什么呢?还记得springmvc返回乱码是怎么配置的吗?

spring返回数据时的默认编码是ISO-8859-1,在中文的时候会出现乱码,我们一般在xml文件中作如下的配置:

<!-- 重新设置编码,防止请求返回乱码 -->
<bean
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean
                    class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </list>
    </property>
</bean>

 

    同样的在StringHttpMessageConverter还提供了另一个属性: writeAcceptCharset,这个是一个布尔值,定义是否需要打印Accept-Charset值,为false时不打印。所以我们只需要做如下设置就可以了。

    <!-- 重新设置编码,防止请求返回乱码 -->
    <bean     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/plain;charset=UTF-8</value>
                        </list>
                    </property>
                    <property name="writeAcceptCharset" value="false" />
                </bean>
            </list>
        </property>
</bean>

 

重启一下tomcat服务,再次请求你的API接口,通过浏览器的f12打开开发人员工具。可以看到如下图的返回结果:

11.jpg

         2

在图2 中的Response Headers中可以看到不再返回Accept-Charset属性,干净清爽了很多,最主要的这会大大的提高了api的请求效率。


来源:自成e家 出处:使用springmvc时提高@ResponseBody API的效率
本文由 自成e家 原创 ,转载请注明出处,你的支持是我继续写作、分享的最大动力!
期待你一针见血的评论,Come on!