ChatGPT解决这个技术问题 Extra ChatGPT

EnableWebMvc 注解含义

我阅读了有关 @EnableWebMvc 的 javadoc。

但是我不明白这个注释是什么意思?

你能解释清楚吗?


A
Andy Wilkinson

当您使用 Java 代码(而不是 XML)来配置您的 Spring 应用程序时,@EnableWebMvc 用于启用 Spring MVC。如果您还不熟悉 Spring 对 Java 配置的支持,this is a good place to start

@EnableWebMvc 相当于 XML 中的 <mvc:annotation-driven />。它支持使用 @RequestMapping 将传入请求映射到特定方法的 @Controller 注释类。您可以在 reference documentation 中阅读有关其默认配置以及如何自定义配置的详细信息。


什么是 mvc:annotation-driven ?
“它支持@Controller-annotated 类”,是不正确的。来自 Spring 文档,To enable auto-detection of such @Controller beans, you can add component scanning
它是正确的。如果没有 @EnableWebMvc,则 @Controller bean 只是一个 bean,而不是控制器。无论是通过组件扫描找到它还是通过 @Bean 方法注册,这都适用。
这仍然相关吗?我们正在使用带有spring boot和@controller、@RequestMapping等的mcv方法。从未见过@EnableWebMvc。
@user3192295 如果您使用的是 Spring Boot,它将为您自动配置 @EnableWebMvc 的等效项。除非您想关闭 Boot 关于应如何配置 Spring MVC 的所有意见,否则您不应在应用程序中使用 @EnableWebMvc
u
user2339071

欢迎来到春天的世界。在了解注释 @EnableWebMVC 的含义之前,您需要了解一些内容。

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

基于 XML 的配置

基于注释的配置

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

考虑一个简单的类:

@EnableWebMvc
@Configuration
public class WebConfig {
}

没有基类。看不到春豆..嗯..

让我们更进一步:

这实际上提供了什么..?

好吧,为了让你更无聊,它提供了很多东西,比如:

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

还有一些。

啊哈...但是您的应用程序可以正确使用它。那么,魔法在哪里..?

@EnableWebMVC <---- What's behind this..?

这是它的背后:

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

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

扩展 WebMvcConfigurationSupport

覆盖@Bean 和其他可用方法

你可以阅读:

Java 反射:注解

希望能帮助到你。 :)


A
Abdur Rahman

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


M
Mahibub Nadaf

将此注解添加到 @Configuration 类从 WebMvcConfigurationSupport 导入 Spring MVC 配置