编程语言
首页 > 编程语言> > 源码分析----SpringBoot中SpringMVC配置原理

源码分析----SpringBoot中SpringMVC配置原理

作者:互联网

官方文档

29.1.1 Spring MVC Auto-configuration

Spring Boot provides auto-configuration for Spring MVC that works well with most applications.

The auto-configuration adds the following features on top of Spring’s defaults:

 

Spring Boot扩展 SpringMVC功能

在spring MVC中,我们可以编写xml来配置我们需要的一些功能,比如拦截器等等。

you can add your own @Configuration class of type WebMvcConfigurer but without @EnableWebMvc

我们可以在类型是WebMvcConfigurer的类上使用@Configuration注解,并且实现我们需要的方法;

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor("拦截器对象").addPathPatterns("/hellow");
    }
}

 

Spring Boot全面接管SpringMVC功能

@EnableWebMvc
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    }
}

为什么加上@EnableWebMvc注解后spring mvc就是失效了呢?

1、导入DelegatingWebMvcConfiguration

@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}

2、DelegatingWebMvcConfiguration 继承了 WebMvcConfigurationSupport 

@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {

3、查看 WebMvcAutoConfiguration 源码

@Configuration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })

//条件判断,组件中有没有WebMvcConfigurationSupport,没有才自动配置
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
		ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {

 

 

 

标签:SpringBoot,SpringMVC,Spring,视图,class,源码,covered,Configuration,public
来源: https://www.cnblogs.com/yanxiaoge/p/11357512.html