购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.5 SpringMVC自动配置原理

在SpringBoot项目中引入spring-boot-starter-web的依赖,SpringBoot的自动配置机制便会加载并初始化其相关组件。根据自动配置的原理,在spring-boot-autoconfigure包中的META-INF/spring.factories配置文件中找到了针对Servlet自动配置的EnableAutoConfiguration。

在SpringBoot中引入了spring-boot-starter-web依赖,并完成了DispatcherServlet的自动配置之后,便会通过WebMvcAutoConfiguration对SpringMVC的自动配置。与DispatcherServletAutoConfiguration一样,首先会在spring-boot-autoconfigure包中的META-INF/spring.factories配置文件中配置注册类WebMvcAutoConfiguration,源代码如下所示。

WebMvcAutoConfiguration源码部分如下所示。

WebMvcAutoConfiguration类中有WebMvcConfigurationSupport会判断容器中没有这个组件的时候,注意:WebMvcConfigurationSupport的子类源码如下所示。

容器中所有的WebMvcConfigurer都会一起起作用,这样SpringMVC的自动配置和扩展配置都会起作用。

1.完全控制SpringMVC

如果您想完全控制SpringMVC,可以添加自己的@Configuration注释并加上@EnableWebMvc。没有SpringMVC的自动配置,SpringMVC的自动配置都失效,代码如下所示。

而@EnableWebMvc导入的WebMvcConfigurationSupport只是SpringMVC最基本的功能如(视图解析器…),需要自动地配置SpringBoot在自动配置很多组件的时候,先看容器中用户配置的(@Bean,@Component),如没有才自动配置,如果有些组件可以有多个(ViewResolver)将用户配置的和自己默认的组合起来。在SpringBoot中会有非常多的xxxConfigurer扩展和有很多的xxxCustomizer定制配置。 sF7dbvwXP197Vn5CkQ1hUeLIWYhQyXfApdYXO1xrLNI9qt+AMbUPxUJbTsHeQ4Qj

点击中间区域
呼出菜单
上一章
目录
下一章
×