spring mvc 3.0中打散 兑现定制的配置

spring mvc 3.0中打散 <mvc:annotation-config/> 实现定制的配置.
项目开始的时候图简单, 用的spring mvc的 mvc 命名空间, 只用一个
<mvc:annotation-config/> 就实现 了spring mvc 的大部分配置, 后来发现在json操作的时候, 如果返回类型为String, 则会出现乱码, 经过笔者查看源码, 发现这时候并不是jacksonMapperConverter在工作, 而是直接被 org.springframework.http.converter.StringHttpMessageConverter处理掉了.

好在这个类是支持定制字符集的.
经过笔者的返复尝试, 才把这个问题搞定.
具体配置是这样的.
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"
          p:order="1"/>
    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <bean class="org.springframework.http.MediaType">
                                <constructor-arg value="text"/>
                                <constructor-arg value="plain"/>
                                <constructor-arg value="utf8"/>
                            </bean>
                        </list>
                    </property>
                </bean>
                <!-- 
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
                 -->
                <bean class="com.fpi.mespvc.web.util.NoCacheMappingJacksonHttpMessageConverter"/>
            </list>
        </property>
    </bean>

如上, 这样就可以实现UTF-8的编码.

同时笔者借此机会也建议spring mvc 的用户在项目初期最好不要用这个简化的配置. 这样定制性比较强. 也减少了后期改动时对已做好的功能的影响的风险.