该mvc:annotationDriven标签基本上是将你的Spring上下文允许请求调度到控制器。
该标记将配置两个bean DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。
在我提供某些要点之前,让我先弄清罗伊(Roy)提供的答案不正确。您不必提供mvc:annotation-driven标签来实例化默认bean。该标签可用于Spring 3.0+启用从Spring 3.0引入的新功能
(如果要向后兼容,请不要使用它,尤其是在使用基于旧控制器的类,如时MultiActionController,SimpleFormController)
现在让我们来看看这个标签的实际作用-
在Spring 3.1之前的版本中,默认的bean在哪里使用
AnnotationMethodHandlerExceptionResolver 这些在Spring 3.1中已弃用,如果您使用上述标记,它将被-
RequestMappingHandlerMapping
DefaultAnnotationHandlerMapping决定使用哪个控制器,然后AnnotationMethodHandlerAdapter选择处理请求的实际方法。RequestMappingHandlerMapping
完成这两个任务。因此,该请求直接直接映射到该方法。
有迹象表明,由这些标签(实例化等基础设施豆类除了链接到默认值),如- ,MappedInterceptor
,,等我不打算解释这些:),因为他们每一个都长的答案本身,所以谷歌,以获得更多信息。ConfigurableWebBindingInitializerSessionFlashManagerContentNegociationManager
PS:是的,Spring 3.1+会自动将@PathVariables
公开给模型。你也有mvc:interceptors
标签。但是我认为这与无关