Spring注解驱动 <mvc:annotation-driven/> 的理解

<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean;

其中AnnotationMethodHandlerAdapter已经默认了4个HtrpMessageConvert, 如下:

StringHttpMessageConverter;

ByteArrayHttpMessageConverter;

SourceHttpMessageConverter;

XmlAwareFormHttpMessageConverter;

当然如果需要其他的信息转换可以自行配置,如下我的配置,当然有些是没有用到,这里只是一个事例:

    <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
 <bean id="mappingJacksonHttpMessageConverter"
  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  <property name="supportedMediaTypes">
   <list>
    <value>text/html;charset=utf-8</value>
   </list>
  </property>
 </bean>
    <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"></bean>
    <bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>
    <bean id="bufferedImageHttpMessageConverter" class="org.springframework.http.converter.BufferedImageHttpMessageConverter"></bean>
    <bean id="sourceHttpMessageConverter" class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>
    <bean id="xmlAwareFormHttpMessageConverter" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></bean>
   
 <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  <property name="messageConverters">
   <list>
    <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
       <ref bean="stringHttpMessageConverter"/>
       <ref bean="byteArrayHttpMessageConverter"/>
       <ref bean="bufferedImageHttpMessageConverter"/>
       <ref bean="sourceHttpMessageConverter"/>
       <ref bean="xmlAwareFormHttpMessageConverter"/>
   </list>
  </property>
 </bean>

 <!--
    这里如果启用这个驱动程序会出错的,因为annotation-driven包括【DefaultAnnotationMethodHandlerAdapter,AnnotationMethodHandlerAdapter】
  其中AnnotationMethodHandlerAdapter的默认配置没有 MappingJacksonHttpMessageConverter这个消息转换,而且启用改配后直接安照默认的配置转换信息
  因此会出错
 -->
 <!-- 开启注解
 <mvc:annotation-driven/>
 -->

猜你喜欢

转载自iswangyg.iteye.com/blog/1938392