• <mvc:annotation-driven />注解意义(转)


    文章转自http://elf8848.iteye.com/blog/875830

    http://www.cnblogs.com/shuo1208/p/5552134.html

    暂时只知道对json的支持,其它的还没有实践

    <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
    并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
    后面,我们处理响应ajax请求时,就使用到了对json的支持。
    后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。

     

    <context:annotation-config> declares support for general annotations such as @Required@Autowired@PostConstruct, and so on.

    <mvc:annotation-driven /> is actually rather pointless. It declares explicit support for annotation-driven MVC controllers (i.e.@RequestMapping@Controller, etc), even though support for those is the default behaviour.

    My advice is to always declare <context:annotation-config>, but don't bother with <mvc:annotation-driven /> unless you want JSON support via Jackson.

    当我们需要controller返回一个map的json对象时,可以设定<mvc:annotation-driven />,

    同时设定<mvc:message-converters> 标签,设定字符集和json处理类,例如:

    <mvc:annotation-driven>
    <mvc:message-converters>
    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
    <list>
    <value>text/plain;charset=UTF-8</value>
    </list>
    </property>
    </bean>
    </mvc:message-converters>
    </mvc:annotation-driven>

    十九、 <mvc:annotation-driven /> 到底做了什么工作

     

     

    一句 <mvc:annotation-driven />实际做了以下工作:(不包括添加自己定义的拦截器)

    我们了解这些之后,对Spring3 MVC的控制力就更强大了,想改哪就改哪里。

    Xml代码  收藏代码
    1.    <!-- 注解请求映射  -->  
    2.    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">          
    3.     <property name="interceptors">  
    4.         <list>    
    5.             <ref bean="logNDCInteceptor"/>   <!-- 日志拦截器,这是你自定义的拦截器 -->  
    6.             <ref bean="myRequestHelperInteceptor"/>   <!-- RequestHelper拦截器,这是你自定义的拦截器-->   
    7.             <ref bean="myPermissionsInteceptor"/>  <!-- 权限拦截器,这是你自定义的拦截器-->   
    8.             <ref bean="myUserInfoInteceptor"/>  <!-- 用户信息拦截器,这是你自定义的拦截器-->   
    9.         </list>          
    10.     </property>          
    11. </bean>     
    12. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
    13.     <property name="messageConverters">    
    14.         <list>    
    15.             <ref bean="byteArray_hmc" />    
    16.             <ref bean="string_hmc" />    
    17.             <ref bean="resource_hmc" />    
    18.             <ref bean="source_hmc" />    
    19.             <ref bean="xmlAwareForm_hmc" />    
    20.             <ref bean="jaxb2RootElement_hmc" />    
    21.             <ref bean="jackson_hmc" />    
    22.         </list>    
    23.     </property>    
    24. </bean>    
    25. <bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. -->  
    26. <bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. -->  
    27. <bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. -->  
    28. <bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. -->  
    29. <bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. -->  
    30. <bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. -->  
    31. <bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->  

      转载请注明出处:原文地址:http://elf8848.iteye.com/blog/875830

  • 相关阅读:
    webstorm破解
    macos-WebStorm安裝
    CocoaPods安装与使用
    前端之HTML
    python调用百度语音(语音识别-斗地主语音记牌器)
    MySQL学习笔记(二)
    MySQL学习笔记(一)
    python网络编程
    计算机网络基础
    python之hashlib、configparser、logging模块
  • 原文地址:https://www.cnblogs.com/shuaiandjun/p/7281943.html
Copyright © 2020-2023  润新知