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

      

  • 相关阅读:
    c# cover他和parse区别
    函数指针的两种调用形式(转)
    -1的 补码
    xp 关 beep提示音
    case 内定义的变量 “crosses initialization” 交叉初始化错误
    WEBSTORM 打开多个项目的方法
    linux--用户管理--useradd
    委托
    C#多态学习总结
    SQL实现group by 分组后组内排序
  • 原文地址:https://www.cnblogs.com/ljstudy/p/14469866.html
Copyright © 2011-2022 走看看