2017-06-19 66 views
1

我对Spring MVC非常陌生,我对你有一个问题。MVC Annotation Spring MVC <mvc:annotation-driven />

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

Thx!

+0

哪个注解? – Juvanis

+0

抱歉,它是来自spring -context文件的标签:)我刚刚编辑了这篇文章:) –

回答

1

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

如果你不包括MVC:组件扫描创建豆或在XML文件中

定义豆:注解驱动,如果你还使用了上下文的MVC应用程序会工作。但是,如果在XML文件中没有使用此元素,则mvc:annotation-driven在配置未配置的特殊bean时会做一些额外的工作。

此标记将注册将请求发送到您的@Controllers所需的HandlerMapping和HandlerAdapter。另外,它还根据类路径中的内容应用一些默认值。这样的设置是:

  • 使用Spring 3类型ConversionService作为一个更简单,更强大的 替代的JavaBean PropertyEditor
  • 支持格式化数字字段与@NumberFormat

  • 支持格式化日期,日历,以及Joda时间字段 @DateTimeFormat,如果Joda时间在类路径上

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

方面:组件扫描弹簧配置文件中的元素不需要声明XML文件中的所有bean。看看下面的声明在Spring配置文件:

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

Spring应用程序配置文件中的上述声明将扫描指定的包中的类和创建豆实例。请注意,只有当该类使用正确的注释注释时,才可以创建bean。以下是由该元件扫描的注释:

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

它的工作原理是一样的。

如果用Java配置去,你会使用:

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

或者,如果你有XML配置去,你会使用:

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