我对Spring MVC非常陌生,有一个问题想请教您。
我知道标签<mvc:annotation-driven />
可以处理注释,例如@Controller、@RequestMapping在servlet配置中的使用,但我正在使用portlet,我很好奇这个注释在这里是如何工作的?
谢谢!
我对Spring MVC非常陌生,有一个问题想请教您。
我知道标签<mvc:annotation-driven />
可以处理注释,例如@Controller、@RequestMapping在servlet配置中的使用,但我正在使用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应用程序也可以工作。
但是,如果您不在XML文件中使用此元素,则mvc:annotation-driven会执行一些额外的工作来配置特殊的bean,否则这些bean将不会被配置。
此标记将注册HandlerMapping和HandlerAdapter以将请求分派到@Controllers。此外,它还根据类路径中存在的内容应用一些默认值。这些默认值包括:
支持使用@NumberFormat格式化数字字段
支持使用@DateTimeFormat格式化Date、Calendar和Joda Time字段(如果类路径中存在Joda Time)
spring配置文件中的context:component-scan元素可以消除在XML文件中声明所有bean的需要。请查看下面在您的Spring配置文件中的声明:
<context:component-scan base-package="org.controller"/>
在Spring应用程序配置文件中的上述声明将扫描指定包内的类并创建bean实例。请注意,只有当该类使用正确的注解进行了注释时,它才能创建bean。以下是此元素扫描的注解: