目录
1.Spring MVC auto-confifiguration
1.Spring MVC auto-confifiguration
2.扩展SpringMVC
以前使用springmvc的时候
springboot
编写一个配置类(
@Confifiguration
),是
WebMvcConfifigurerAdapter
类型;不能标注
@EnableWebMvc
;
既保留了所有的自动配置,也能用我们扩展的配置;
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//super.addViewControllers(registry);
//浏览器发送 /hello 请求来到 success 页面
registry.addViewController("/hello").setViewName("success");
}
}
原理:
1
)、
WebMvcAutoConfifiguration
是
SpringMVC
的自动配置类
2
)、在做其他自动配置时会导入;
@Import(
EnableWebMvcConfifiguration
.class)
//从容器中获取所有的WebMvcConfigurer
//将所有的 WebMvcConfigurer相关配置都来一起调用
3
)、容器中所有的
WebMvcConfifigurer
都会一起起作用;
4
)、我们的配置类也会被调用;
效果:SpringMVC的自动配置和我们的扩展配置都会起作用;
3.全面接管SpringMVC
需要在配置类中添加
@EnableWebMvc
即可;
SpringBoot
对
SpringMVC
的自动配置不需要了,所有都是我们自己配置;所有的
SpringMVC
的自动配置都失效了
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
@EnableWebMvc
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//super.addViewControllers(registry);
//浏览器发送 /hello 请求来到 success 页面
registry.addViewController("/hello").setViewName("success");
}
}
原理:
为什么
@EnableWebMvc
自动配置就失效了;
1
)
@EnableWebMvc
的核心
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
表示:容器中没有这个组件的时候,这个自动配置类才生效
2)、
@EnableWebMvc
将
WebMvcConfifigurationSupport
组件导入进来,所以不再导入系统的自动配置;
3)、导入的
WebMvcConfifigurationSupport
只是
SpringMVC
最基本的功能;
4.修改SpringBoot的默认配置
模式:
1
)、
SpringBoot
在自动配置很多组件的时候,先看容器中有没有用户自己配置的(
@Bean
、
@Component
)如
果有就用用户配置的,如果没有,才自动配置;如果有些组件可以有多个(
ViewResolver
)将用户配置的和自己默
认的组合起来;
2
)、在
SpringBoot
中会有非常多的
xxxConfifigurer
帮助我们进行扩展配置
3
)、在
SpringBoot
中会有很多的
xxxCustomizer
帮助我们进行定制配置