MVC注解Spring MVC <mvc:annotation-driven />是什么意思?

4

我对Spring MVC非常陌生,有一个问题想请教您。

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

谢谢!


哪个注解? - Juvanis
抱歉,这是来自Spring-context文件的标签 :) 我刚刚编辑了帖子 :) - Dina Bogdan
2个回答

14

它的作用相同。

如果您选择Java配置,则会使用:

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

如果您选择使用XML配置,则可以使用以下代码:

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

2

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

如果您没有包含mvc:annotation-driven,即使您已经使用context:component-scan创建了bean或在XML文件中定义了bean,您的MVC应用程序也可以工作。

但是,如果您不在XML文件中使用此元素,则mvc:annotation-driven会执行一些额外的工作来配置特殊的bean,否则这些bean将不会被配置。

此标记将注册HandlerMapping和HandlerAdapter以将请求分派到@Controllers。此外,它还根据类路径中存在的内容应用一些默认值。这些默认值包括:

  • 使用Spring 3 Type ConversionService作为JavaBeans PropertyEditors的更简单和更强大的替代方法
  • 支持使用@NumberFormat格式化数字字段

  • 支持使用@DateTimeFormat格式化Date、Calendar和Joda Time字段(如果类路径中存在Joda Time)

  • 如果JSR-303 Provider在类路径中,则支持使用@Valid验证@Controller输入
  • 如果类路径中存在JAXB,则支持读取和写入XML
  • 如果类路径中存在Jackson,则支持读取和写入JSON

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

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接