Percy

<mvc:annotation-driven />有什么作用?

java

我在我的REST API中使用文件名(例如:GET http://xxx/api/myImage.jpg),问题是@PathVariable删除了“ .jpg”。这个问题已经在这里问过几次并得到了回答。但对我没用

所以我搜索然后在

https://jira.springsource.org/browse/SPR-6524

“ …根本不应该将其与手动的DefaultAnnotationHandlerMapping实例结合使用;目前,这被设计为“或”选择,与and非常相似。”

“ mvc名称空间是简化的配置”。

真正的问题是mvc怎么办?和改变?

这些东西我发现自己。

  1. 拦截器配置已更改。(bean配置中需要mvc namspace)
  2. useDefaultSuffixPattern无法正常工作。
  3. 添加JSON消息转换器。如果杰克逊图书馆可用
  4. @PathVariable参数会自动添加到模型中
    还有其他吗?

提前致谢!


阅读 550

收藏
2020-12-01

共2个答案

小编典典

该mvc:annotationDriven标签基本上是将你的Spring上下文允许请求调度到控制器。

该标记将配置两个bean DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。

2020-12-01
小编典典

在我提供某些要点之前,让我先弄清罗伊(Roy)提供的答案不正确。您不必提供mvc:annotation-driven标签来实例化默认bean。该标签可用于Spring 3.0+启用从Spring 3.0引入的新功能

(如果要向后兼容,请不要使用它,尤其是在使用基于旧控制器的类,如时MultiActionController,SimpleFormController)

现在让我们来看看这个标签的实际作用-

在Spring 3.1之前的版本中,默认的bean在哪里使用

  1. DefaultAnnotationHandlerMapping
  2. AnnotationMethodHandlerAdapter
  3. AnnotationMethodHandlerExceptionResolver
    这些在Spring 3.1中已弃用,如果您使用上述标记,它将被-

  4. RequestMappingHandlerMapping

  5. RequestMappingHandlerAdapter
  6. ExceptionHandlerExceptionResolver

DefaultAnnotationHandlerMapping决定使用哪个控制器,然后AnnotationMethodHandlerAdapter选择处理请求的实际方法。RequestMappingHandlerMapping完成这两个任务。因此,该请求直接直接映射到该方法。

有迹象表明,由这些标签(实例化等基础设施豆类除了链接到默认值),如- ,MappedInterceptor,,等我不打算解释这些:),因为他们每一个都长的答案本身,所以谷歌,以获得更多信息。ConfigurableWebBindingInitializerSessionFlashManagerContentNegociationManager

PS:是的,Spring 3.1+会自动将@PathVariables公开给模型。你也有mvc:interceptors标签。但是我认为这与无关

2020-12-01