欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot扩展springmvc的配置

程序员文章站 2022-06-13 15:46:28
...

springboot扩展springmvc

springboot扩展springmvc的配置、都知道springboot的核心是自动装配、

如果要在不破坏springboot的springmvc自动装配、配置的情况下、我们可以自己写一个配置类去实现WebMvcConfigurer

在springboot的自动装配的情况下去扩展springmvc的新功能

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
  	//视图跳转、
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
      //浏览器访问location:8080/aa     ---> 他会找到名为index的视图名字的html
        registry.addViewController("/aa").setViewName("index");
    }
}

实现了WebMvcConfigurer 接口就可以在springboot中扩展springmvc的配置、

@EnableWebMvc注解说明

如果你在自定义的springmvc的MyMvcConfig配置类上加上了这个注解@EnableWebMvc 加上了这个注解后springboot对springmvc的自动装配全部失效、

为什么?

我们可以看一下这个@EnableWebMvc注解里面配置了什么

@EnableWebMvc注解中的内容
  |
@Import(DelegatingWebMvcConfiguration.class)
这个注解里面导入了一个类

DelegatingWebMvcConfiguration 类的内容
  |
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport
到这可以得出一个结论、说白了这个注解@EnableWebMvc就等于它、
WebMvcConfigurationSupport已经被spring托管了、简单来说就是
WebMvcConfigurationSupport类已经在容器中了。

在看一下WebMvcAutoConfiguration: 自动装配的类

WebMvcAutoConfiguration 类 、这个类就是自动装配配置的类这个了中会自动装配webmvc的全部配置
类中有一个注解
  |
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) : 这个注解是、个人理解的是:在springboot自动装配时spring的容器中没有这个
WebMvcConfigurationSupport类时这个WebMvcAutoConfiguration配置类生效、如
果在程序走到了这个自动装配的类时、发现容器中有这个类、此时这个
WebMvcAutoConfiguration自动装配的类失效。
简单来说就是判断容器中是否有这个类、’有‘、自动装配配置类失效、’没有‘、自动
装配配置类有效

springboot扩展springmvc的配置

最后得出一个结论、就是加上这个@EnableWebMvc注解它会将这个WebMvcConfigurationSupport类注入到容器中、等程序走到自动装配的类时、发现容器中有这个类、此时WebMvcAutoConfiguration类失效、springboot将不会在自动装配springmvc的配置了、由将加了@EnableWebMvc这这个注解的配置类全权配置