`

<mvc:annotation-driven />做了什么

 
阅读更多

 

<mvc:annotation-driver />是一种简写形式,作用就是简化手动配置。要想知道它做了什么它的解析类就好了。

spring-webmvc包下有个MvcNamespaceHandler就是专门处理,mvc命名空间下的标签的。(这里可以看到所谓的命名空间也就是为了分类处理配置)。MvcNamespaceHandler的init()方法注册了许多解析器,其中AnnotationDrivenBeanDefinitionParser解析器就是用于解析“annotation-driven”的。

 

可以看到这个解析器做了以下事情:

1.注册以下HandlerMapping:

RequestMappingHandlerMapping

BeanNameUrlHandlerMapping

 

2.注册以下HandlerAdapter:

RequestMappingHandlerAdapter

HttpRequestHandlerAdapter

SimpleControllerHandlerAdapter

 

以及注册几个HandlerExceptionResolver、AntPathMatcher。(我们不关注)

 

我们比较关注HandlerMapping和HandlerAdapter,其实就算我们完全不配置,DispatcherServlet类也会读取DispatcherServlet.properties资源文件做一些默认配置,在DispatcherServlet.properties中

HandlerMapping默认配置的是:

BeanNameUrlHandlerMapping和DefaultAnnotationHandlerMapping

HandlerAdapter默认配置的是:

HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter和AnnotationMethodHandlerAdapter

 

 

而解析<mvc:annotation-driver />过程在配置RequestMappingHandlerAdapter时,会自动注册一些MessageConverter用于返回时将结果转换成想要的数据格式。比如有些时候需要将结果转成json放入ResponseBody返回,则需要注册MappingJackson2HttpMessageConverter。解析类会检查路径中是否存在

"com.fasterxml.jackson.databind.ObjectMapper"和"com.fasterxml.jackson.core.JsonGenerator"两个类(存在于jackson的jar包中),如果存在则注册MappingJackson2HttpMessageConverter。因此就必须加入相关的包,然后选择配置<mvc:annotation-driver />或者手动配

<bean id="jsonConverter"

class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>

<bean

class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<property name="messageConverters">

<list>

<ref bean="jsonConverter" />

</list>

</property>

</bean>

分享到:
评论

相关推荐

    拦截器与冲突解决

    - **排除默认拦截器**:如果`&lt;mvc:annotation-driven /&gt;`包含默认拦截器,可以考虑使用`&lt;mvc:default-servlet-handler&gt;`或`&lt;mvc:annotation-driven enable-matrix-variables="false" /&gt;`来禁用它们。 - **调整拦截器...

    SpringMVC源码总结(三)mvc:annotation-driven和mvc:message-converters简单介绍

    &lt;mvc:annotation-driven&gt; &lt;mvc:message-converters register-defaults="false"&gt; &lt;!-- 添加自定义或扩展的消息转换器 --&gt; &lt;bean class="com.example.CustomJsonConverter"/&gt; &lt;!-- 添加对XML的支持 --&gt; &lt;bean ...

    SpringMVC源码总结(二)mvc:mvc:annotation-driven背后的那些事

    在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...

    (代码)SpringMVC第12讲:<mvc:annotation-driven/>

    首先,`&lt;mvc:annotation-driven/&gt;`的作用是自动配置Spring MVC,启用对处理方法注解的支持,如`@RequestMapping`、`@RequestParam`、`@ModelAttribute`等。通过这个元素,我们可以避免编写大量的XML配置,转而采用...

    spring_MVC源码

    14. &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; 15. 16. &lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt; 17. &lt;bean class="org....

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    除了上述方法,还可以在`&lt;mvc:annotation-driven&gt;`元素内部使用`&lt;mvc:message-converters&gt;`配置自定义的`HttpMessageConverter`,效果与上述配置相同: ```xml &lt;mvc:annotation-driven&gt; &lt;mvc:message-converters&gt; ...

    Spring源码学习十一:SpringMVC-@RequestBody接收json数据报4151

    深入源码分析,`&lt;mvc:annotation-driven /&gt;` 是Spring MVC中用于启用注解驱动的配置元素,它会自动配置一些关键组件,包括消息转换器。`MvcNamespaceHandler` 是处理这个注解的命名空间处理器,而`...

    spring-mvc-4.2.xsd.zip

    这个文件包含了所有在Spring MVC 4.2版本中可以使用的XML配置元素和属性,例如`&lt;mvc:annotation-driven&gt;`、`&lt;bean&gt;`、`&lt;context:component-scan&gt;`等。这些配置元素允许开发者声明式地配置控制器、视图解析器、转换...

    Spring MVC--2.入门程序

    &lt;mvc:annotation-driven/&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/"/&gt; &lt;property name="suffix" value=".jsp"/&gt; ...

    SPRING MVC3.2案例讲解---配置

    &lt;mvc:annotation-driven/&gt; &lt;/beans&gt; ``` 在上述配置中,`context:component-scan`标签用于扫描指定包下的所有带有@Controller注解的类,使Spring能够自动管理这些类。`InternalResourceViewResolver`是视图解析器...

    springmvc加入json支持需要的jar包

    &lt;/mvc:annotation-driven&gt; ``` 3. **使用注解**:在控制器方法上使用`@RequestBody`和`@ResponseBody`注解来处理JSON请求和响应。`@RequestBody`用于将JSON请求体转换为Java对象,而`@ResponseBody`则将方法的...

    使用Maven构建Spring MVC项目的简单示例

    &lt;mvc:annotation-driven /&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/" /&gt; &lt;property name="suffix" value=".jsp" ...

    spring mvc基础

    &lt;mvc:annotation-driven/&gt; &lt;!-- 视图解析器配置 --&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/jsp/"/&gt; &lt;property name=...

    spring mvc架构搭建,实现简单的查询用户查询功能

    &lt;mvc:annotation-driven/&gt; &lt;!-- 视图解析器配置 --&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/"/&gt; &lt;property name...

    Spring mvc 环境搭建(maven构建)

    &lt;mvc:annotation-driven/&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/"/&gt; &lt;property name="suffix" value=".jsp"/&gt; ...

    spring-mvc的简单实现

    &lt;mvc:annotation-driven /&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/"/&gt; &lt;property name="suffix" value=".jsp"/&gt; ...

    spring-mvc 注解方式xml配置

    `&lt;mvc:annotation-driven&gt;`则启用了Spring MVC的注解支持。 最后,`web.xml`是应用的部署描述符,配置`DispatcherServlet`以便处理所有HTTP请求: ```xml &lt;web-app&gt; &lt;servlet&gt; &lt;servlet-name&gt;dispatcher&lt;/...

    spring MVC

    要在Spring MVC配置文件中启用注解支持,需要引入mvc命名空间,并使用`&lt;mvc:annotation-driven/&gt;`标签,例如: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    Spring MVC入门教程

    个人认为相当适合入门和知识巩固!! 一、前言 二、spring mvc 核心类与接口 ...十九、 &lt;mvc:annotation-driven /&gt; 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址

Global site tag (gtag.js) - Google Analytics