Spring Boot-@EnableWebMvc注解
作用:当配置类中添加了该注解了之后,就表示某个模块的自动配置就都失效了,全部都要自己配置
例如下面这个MVC模块的配置类
/**
 * @author:抱着鱼睡觉的喵喵
 * @date:2020/12/18
 * @description:
 */
//使用WebMvcConfigurer接口扩展Spring MVC的功能
@Configuration
@EnableWebMvc
public class MyMVcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        //向浏览器发送/hao请求来到success
        registry.addViewController("/hao").setViewName("forward:success");
    }
}
自此这段代码就表示SpringMVC的自动配置就都失效了
为了加一个@EableWebMvc注解,自动配置就都失效了呢?
原理如下:
ctrl+右键点击该注解查看源码
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {
}
其中的DelegatingWebMvcConfiguration是核心-》继续进去查看源码
 核心的代码如下
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
我们发现这个类继承了WebMvcConfigurationSupport,那这和自动配置失效有什么联系呢?
重点来了
查看WebMvcAutoConfiguration ---- web模块自动配置类-》源码
头部代码如下
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
		ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
其中的@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)是关键,它的意思是容器中没有WebMvcConfigurationSupport这个类时,自动配置类才会生效
所以我们就明白了,因为@EableConfiguration注解中的DelegatingWebMvcConfiguration继承了WebMvcConfigurationSupport,所以才会导致自动配置类失效
===========================================================
 总结:
 @EnableWebMvc将WebMvcConfigurationSupport组件导入容器里了,WebMvcConfigurationSupport里只有基础的功能
Spring Boot-@EnableWebMvc注解的更多相关文章
- Spring Boot常用注解总结
		
Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...
 - Spring Boot 常用注解汇总
		
一.启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documen ...
 - 3个Spring Boot核心注解,你知道几个?
		
Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...
 - Spring Boot@Component注解下的类无法@Autowired的问题
		
title: Spring Boot@Component注解下的类无法@Autowired的问题 date: 2019-06-26 08:30:03 categories: Spring Boot t ...
 - Spring boot 基于注解方式配置datasource
		
Spring boot 基于注解方式配置datasource 编辑  Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionF ...
 - 【SpringBoot】15. Spring Boot核心注解
		
Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...
 - spring boot纯注解开发模板
		
简介 spring boot纯注解开发模板 创建项目 pom.xml导入所需依赖 点击查看源码 <dependencies> <dependency> <groupId& ...
 - Spring Boot中注解@ConfigurationProperties
		
在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景.本篇文章带大家了解一下三种场景的使用情况. 场景一 使用@ ...
 - Spring Boot @EnableWebMvc 与 mvc 配置
		
注意: 1.小心使用 @EnableWebMvc 注解 根据官方文档,尽量不要使用 @EnableWebMvc 注解,因为它会关闭默认配置. ① 你希望关闭默认配置,自己完全重新实现一个 @Enab ...
 - Spring Boot  @Enable*注解源码解析及自定义@Enable*
		
Spring Boot 一个重要的特点就是自动配置,约定大于配置,几乎所有组件使用其本身约定好的默认配置就可以使用,大大减轻配置的麻烦.其实现自动配置一个方式就是使用@Enable*注解,见其名知 ...
 
随机推荐
- C++ STL vector扩容原理分析
			
扩容特点: 1)新增元素:vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素: 2)对vector的 ...
 - 一比一还原axios源码(二)—— 请求响应处理
			
上一章,我们开发了一些简单的代码,这部分代码最最核心的一个方法就是buildURL,应对了把对象处理成query参数的方方面面.虽然我们现在可以发起简单的请求了,但是第一,我们无法接收到服务器的响应, ...
 - Fiddler抓取https协议的证书导入过程
			
fildder抓取https的设置以及证书导出 打开fiddler界面,选择左上角菜单栏Tools-Options 出现Options界面后,选择HTTPS选项卡 勾选上Capture HTTPS C ...
 - ArcGIS进行视域分析及地形图制作
			
问题说明 开发商要在本区域建造观景亭,希望在观景亭上能看到优美的景色.根据提供的数据,完成以下要求. 一. 数据说明(见"题目3"文件夹) 1. DEM.tif:研究区域的数据高 ...
 - ArcGIS提取水系并进行生态敏感性分析
			
1.前言 此前已经发表过一篇名为<ENVI提取水系并进行生态敏感性分析>的随笔,这篇是用ArcGIS进行水系提取,与前者的区别是上篇一般是对遥感影像进行处理,准确性较高:这篇是讲在没有遥感 ...
 - 理解 MVCC
			
MongoDB.MySQL.Oracle.PostgreSQL 等事务型数据库都有 mvcc 的概念. MVCC: 即多版本并发控制,主要是为了提高数据库的读写性能,让数据库在读写的时候不用去加锁.m ...
 - WinDbg调试托管程序环境问题总结
			
基本环境搭建及安装 安装 有2个方式可以安装WinDbg. 新版 安装WinDbg Preview 在商店里搜WinDbg直接就可以安装,这里安装的版本是x64版本.x64版本的WinDbg其实是可以 ...
 - Java基础-反转数组
			
/** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...
 - vue学习过程总结(08) - vue开发报错提示缺少本地文件的包
			
vue开发启动过程会报错某个src下自己写的包找不到为安装,原因有两个 1.import的from后面的路径不正确 2.如果开发中用到了scss是也会一直报这个错,这时候可能你没有安装scss加载器, ...
 - @Controller 注解?
			
该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API.