@EnableWebMvc注解的含义是什么?

96

我阅读了有关@EnableWebMvc的Javadoc文档。

但是我不明白这个注解的含义?

你能否清晰地解释一下呢?

4个回答

111

当你使用Java代码(而非XML)配置你的Spring应用程序时,@EnableWebMvc 用于启用Spring MVC。如果你还不熟悉Spring对Java配置的支持,可以从这里开始。

@EnableWebMvc 等价于XML中的 <mvc:annotation-driven />。它使得支持用 @RequestMapping 将传入的请求映射到某个方法的 @Controller 注释类。您可以在参考文档中阅读关于默认配置和如何自定义配置的详细信息。


1
什么是mvc:annotation-driven? - Koray Tugay
1
“它启用了对@Controller注释类的支持”是不正确的。根据Spring文档,“为了启用自动检测这样的@Controller bean,您可以添加组件扫描”。 - Rich
1
这是正确的。如果没有使用@EnableWebMvc,那么@Controller bean只是一个普通的bean,而不是控制器。无论是通过组件扫描还是通过@Bean方法注册,都适用。 - Andy Wilkinson
1
这还有用吗?我们正在使用Spring Boot的MVC方法,包括@Controller、@RequestMapping等。从未见过@EnableWebMvc。 - user3192295
2
如果您正在使用Spring Boot,它将为您自动配置等效的 @EnableWebMvc。除非您想关闭Boot关于如何配置Spring MVC的所有观点,否则您不应在应用程序中使用 @EnableWebMvc - Andy Wilkinson
这里有一个很好的解释:https://dev59.com/ea72oIgBc1ULPQZFx6Ur - Abe

58

欢迎来到Spring的世界。在理解注释@EnableWebMVC的含义之前,您需要了解一些东西。

传统上,Spring支持两种类型的配置:

这些注释本质上是作为MVC Java Config Design的一部分实现的。

考虑一个简单的类:

@EnableWebMvc
@Configuration
public class WebConfig {
}

没有基类,看不到Spring Bean... 嗯...

让我们再深入一点:

  • 那么这实际上提供了什么呢?

好吧,稍微再让你无聊一点,它提供了很多东西,比如:

  1. @MVC请求处理
  2. 全局JSR-303验证器

还有一些其他的。

啊哈哈...但是你的应用程序可以使用它,对吧。那么,魔法在哪里呢..?

@EnableWebMVC <---- 背后是什么..?

这就是它背后的东西:

@Retention(RetentionPolicy.RUNTIME)
@Import(DelegatingWebMvcConfiguration.class)
@Target(ElementType.TYPE)
public @interface EnableWebMvc {
}

看,现在你可能会认为使用@EnableWebMVC是多么无意义。你更愿意:

您可以阅读以下内容:

希望能对您有所帮助。 :)


3

当我们想要构建一个Spring Web MVC项目时,需要从WebMvcConfigurationSupport中添加必要的导入。因此,在基于Java的配置中,应使用@EnableWebMvc。只有一个@Configuration类可以有@EnableWebMvc


0
将此注解添加到@Configuration类中,可以从WebMvcConfigurationSupport导入Spring MVC配置。

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