1.定制的常用方式是修改配置文件;xxxxx定制器;编写自定义配置类xxxConfiguration;+@Bean替换和添加容器中的默认组件;viewparserweb应用写一个配置类来实现****WebMvcConfigurer可以自定义web功能;+@Bean扩展了容器中的一些组件(主要)@ConfigurationpublicclassAdminWebConfigimplementsWebMvcConfigurer@EnableWebMvc+WebMvcConfigurer——@Bean可以完全接管SpringMVC,所有规则都自己重新配置;自定义和扩展功能的实现原理1.WebMvcAutoConfiguration:SpringMVC默认的自动配置功能类。静态资源、欢迎页等一堆配置。2.一旦使用了@EnableWebMvc,就会使用@Import(DelegatingWebMvcConfiguration.class)。3、DelegatingWebMvcConfiguration的作用只是保证SpringMVC最基本的使用,从所有系统中取WebMvcConfigurer。所有功能的定制就是这些WebMvcConfigurer协同工作,自动配置一些非常底层的组件。比如RequestMappingHandlerMapping,这些组件依赖的组件都是从容器publicclassDelegatingWebMvcConfigurationextendsWebMvcConfigurationSupport4中获取的,WebMvcAutoConfiguration中的配置要生效,容器中必须没有WebMvcConfigurationSupport类@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)5,@AutoConfig导致WebMvc无法生效。(@EnableWebMvc会将DelegatingWebMvcConfiguration导入到容器中,相当于导入WebMvcConfigurationSupport)2.原理分析例程导入场景启动器starter--->场景启动器导入一系列自动配置xxxxAutoConfiguration--->这些自动配置是通过@Bean将xxx组件导入到容器中--->组件的默认属性绑定到xxxProperties--->这些属性绑定到配置文件项如果以后要扩展SpringMvc:写一个配置实现WebMvcConfigurer自定义web功能的类+@Bean扩展容器中的一些组件或者导入场景启动器starter,然后修改配置文件(yaml)
