zoukankan      html  css  js  c++  java
  • 注解@EnableWebMvc如何导致web中的SpringMvc失效

    全面接管Spring MVC

    是指SpringBoot对SpringMVC的自动配置,不需要了
    所有的,SpringMVC的自动配置都失效了
    所有的,都需要自己配置

    @EnableWebMvc

    需要在配置类中添加@EnableWebMvc即可

    //使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
    @EnableWebMvc   //全面接管SpringMVC
    @Configuration
    public class MyMvcConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            // super.addViewControllers(registry);
            //浏览器发送 /atguigu 请求来到 success
            registry.addViewController("/atguigu").setViewName("success");
        }
    }

    实现原理

    WebMvcAutoconfiguration.java没有  @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)这个场景才会生效

    @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 {
    

    看它的继承树

     而@EnableWebMvc点进去,发现导入了DelegatingWebMvcConfiguration.class,而DelegatingWebMvcConfiguration.class的父类就是WebMvcConfigurationSupport.class,所以全部失效,全权接管springMvc

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

      

  • 相关阅读:
    移动端Web 关于单位rem的使用小结
    psp工具需求分析
    c#制作计算器全过程
    需求分析
    为石家庄的蓝天发的第一篇博文
    ASP.NET Core 应用发布与部署指南
    开博有感
    准备开始添加博客
    深挖UITableViewCell-编辑多选模式下,引发的深思
    AFNetworking 报错3840...
  • 原文地址:https://www.cnblogs.com/ljstudy/p/14469866.html
Copyright © 2011-2022 走看看