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处理掉了.
好在这个类是支持定制字符集的.
经过笔者的返复尝试, 才把这个问题搞定.
具体配置是这样的.
如上, 这样就可以实现UTF-8的编码.
同时笔者借此机会也建议spring mvc 的用户在项目初期最好不要用这个简化的配置. 这样定制性比较强. 也减少了后期改动时对已做好的功能的影响的风险.
项目开始的时候图简单, 用的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 的用户在项目初期最好不要用这个简化的配置. 这样定制性比较强. 也减少了后期改动时对已做好的功能的影响的风险.