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



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

我知道 tag<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-scan 来创建 bean 或在 XML 文件中定义了 bean,那么您的 MVC 应用程序也可以工作

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

此标记将注册将请求分派到@Controllers所需的处理程序映射和处理程序适配器。此外,它还根据类路径中存在的内容应用一些默认值。此类默认值为:

  • 使用 Spring 3 类型转换服务作为更简单、更多 JavaBeans PropertyEditors 的强大替代方案
  • 支持使用 @NumberFormat 设置数字字段的格式

  • 支持格式化日期、日历和乔达时间字段 @DateTimeFormat,如果乔达时间在类路径上

  • 支持使用 @Valid 验证@Controller输入(如果是 JSR-303) 提供程序位于类路径上
  • 支持读取和写入 XML(如果 JAXB 位于类路径上)
  • 支持读取和写入 JSON,如果 Jackson 在类路径上

上下文:Spring 配置文件中的组件扫描元素将消除在 XML 文件中声明所有 bean 的需要。查看 spring 配置文件中的以下声明:

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

Spring 应用程序配置文件中的上述声明将扫描指定包中的类并创建 bean 实例。请注意,仅当该类使用正确的注释进行注释时,它才能创建 bean。以下是此元素扫描的批注:

  • @Component
  • @Repository
  • @Service
  • @Controller

最新更新