MVC 注释 Spring MVC <mvc:annotation-driven />

MVC Annotation Spring MVC <mvc:annotation-driven />

我是 Spring MVC 的新手,我有一个问题要问你。

我知道标签<mvc:annotation-driven />处理servlet配置中的@Controller、@RequestMapping等注释,但我使用的是portlet,我很好奇这个注释在这里是如何工作的?

谢谢!

效果一样。

如果您使用 java 配置,您将使用:

...
@Configuration
@EnableWebMvc <- (equivalent to <mvc:annotation-driven />)
@ComponentScan(basePackageClasses = { MyConfiguration.class })
...

或者,如果您使用 xml 配置,您将使用:

...
<mvc:annotation-driven />
<context:component-scan base-package="package.*" />
...

mvc:annotation-driven 用于启用具有默认配置的 Spring MVC 组件。

如果您不包含 mvc:annotation-driven 如果您使用 context:component-扫描创建 bean 或在您的 XML文件

。但是,mvc:annotation-driven 在配置特殊 bean 方面做了一些额外的工作,如果您没有在 XML 文件中使用此元素,则不会配置这些 bean。

此标记将注册将请求分派给您的@Controller 所需的HandlerMapping 和HandlerAdapter。此外,它还会根据您的 class 路径中存在的内容应用一些默认值。这样的默认值是:

  • 使用 Spring 3 Type ConversionService 更简单 JavaBeans PropertyEditors 的强大替代品
  • 支持使用@NumberFormat

  • 格式化数字字段
  • 支持格式化日期、日历和 Joda 时间字段 @DateTimeFormat,如果 Joda Time 在 classpath

  • 支持使用@Valid 验证@Controller 输入,如果是 JSR-303 提供商在 class 路径
  • 支持读取和写入 XML,如果 JAXB 在 classpath
  • 支持读写JSON,如果杰克逊在class路径

context:component-scan 配置文件中的 spring 元素将消除在 XML 文件中声明所有 bean 的需要。查看 spring 配置文件中的以下声明:

<context:component-scan base-package="org.controller"/>

上述 spring 应用程序配置文件中的声明将扫描指定包内的 classes 并创建 beans 实例。请注意,只有在 class 使用正确的注解进行注解时,它才能创建 bean。以下是该元素扫描到的注解:

  • @组件
  • @存储库
  • @服务
  • @控制器