springMVC 配置 <mvc:annotation-driven/>标签说明

annotation-driven缺省注册类的改变

Spring 3.0.x中使用了annotation-driven后,缺省使用DefaultAnnotationHandlerMapping 来注册handler method和request的mapping关系。 AnnotationMethodHandlerAdapter来在实际调用handlermethod前对其参数进行处理。



在spring mvc 3.1中,对应变更为
DefaultAnnotationHandlerMapping -> RequestMappingHandlerMapping
AnnotationMethodHandlerAdapter -> RequestMappingHandlerAdapter
AnnotationMethodHandlerExceptionResolver -> ExceptionHandlerExceptionResolver

以上都在使用了annotation-driven后自动注册。
  而且对应分别提供了AbstractHandlerMethodMapping , AbstractHandlerMethodAdapter和 AbstractHandlerMethodExceptionResolver以便于让用户更方便的实现自定义的实现类。

3.1中<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和 AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了 @Controller注解的使用前提配置。

3.2中<mvc:annotation-driven/>相当于注册了RequestMappingHandlerMapping和 AnnotationMethodHandlerAdapter两个bean,即

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>

  <!-- 一些@RequestMapping 请求和一些转换 -->
    <mvc:annotation-driven /> 

  <!--静态资源映射-->
    <mvc:resources mapping="/assets/**" location="/WEB-INF/img/,/WEB-INF/js/"/>
    <mvc:default-servlet-handler/>

 <mvc:resources/>比<mvc:default-servlet-handler/>更进一步。

以上配置就使springMVC 基于注解的配置生效,并且已经配置基本的converter,包括json,xml等,但没有配置资源解析器,需要自行添加。

其他一些比较少用的:

@ModelAttribute(str):

1. 标注在方法上(作用于method级别),当每次执行此controller中RequestMapping方法前都会执行有此标注的方法,通常用于准备一些数据或做一些检查。

2.一个是用作method里的参数.

猜你喜欢

转载自xls9577087.iteye.com/blog/2148908