<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>
相关推荐
- **排除默认拦截器**:如果`<mvc:annotation-driven />`包含默认拦截器,可以考虑使用`<mvc:default-servlet-handler>`或`<mvc:annotation-driven enable-matrix-variables="false" />`来禁用它们。 - **调整拦截器...
<mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <!-- 添加自定义或扩展的消息转换器 --> <bean class="com.example.CustomJsonConverter"/> <!-- 添加对XML的支持 --> <bean ...
在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...
首先,`<mvc:annotation-driven/>`的作用是自动配置Spring MVC,启用对处理方法注解的支持,如`@RequestMapping`、`@RequestParam`、`@ModelAttribute`等。通过这个元素,我们可以避免编写大量的XML配置,转而采用...
14. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 15. 16. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 17. <bean class="org....
除了上述方法,还可以在`<mvc:annotation-driven>`元素内部使用`<mvc:message-converters>`配置自定义的`HttpMessageConverter`,效果与上述配置相同: ```xml <mvc:annotation-driven> <mvc:message-converters> ...
深入源码分析,`<mvc:annotation-driven />` 是Spring MVC中用于启用注解驱动的配置元素,它会自动配置一些关键组件,包括消息转换器。`MvcNamespaceHandler` 是处理这个注解的命名空间处理器,而`...
这个文件包含了所有在Spring MVC 4.2版本中可以使用的XML配置元素和属性,例如`<mvc:annotation-driven>`、`<bean>`、`<context:component-scan>`等。这些配置元素允许开发者声明式地配置控制器、视图解析器、转换...
<mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> ...
<mvc:annotation-driven/> </beans> ``` 在上述配置中,`context:component-scan`标签用于扫描指定包下的所有带有@Controller注解的类,使Spring能够自动管理这些类。`InternalResourceViewResolver`是视图解析器...
</mvc:annotation-driven> ``` 3. **使用注解**:在控制器方法上使用`@RequestBody`和`@ResponseBody`注解来处理JSON请求和响应。`@RequestBody`用于将JSON请求体转换为Java对象,而`@ResponseBody`则将方法的...
<mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" ...
<mvc:annotation-driven/> <!-- 视图解析器配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name=...
<mvc:annotation-driven/> <!-- 视图解析器配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name...
<mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> ...
<mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> ...
`<mvc:annotation-driven>`则启用了Spring MVC的注解支持。 最后,`web.xml`是应用的部署描述符,配置`DispatcherServlet`以便处理所有HTTP请求: ```xml <web-app> <servlet> <servlet-name>dispatcher</...
要在Spring MVC配置文件中启用注解支持,需要引入mvc命名空间,并使用`<mvc:annotation-driven/>`标签,例如: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
个人认为相当适合入门和知识巩固!! 一、前言 二、spring mvc 核心类与接口 ...十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址