Springboot 个性化配置SpringMVC
Springboot很重要的一个功能就是整合了各种spring相关框架以及其他在开发场景中通用的包和需要配置的类。达到的效果就是以前需要写非常多的配置类以及XML文件,现在只需要在porm中配置:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
其中spring-boot-starter-xxx就是spring官方 给出的各种应用场景的打包,当然我们可以自己打包一些场景。但是什么都打包好了,如果我要自己配置,那怎么办呢?
1 SpringMVC自动配置
要想自己配置一些个性化的设置,那么要了解springboot是如何进行自动化配置以及配置了哪些东西的。
加载入口
springboot的启动路口相对于tomocat来说要明显一点,至少这里有了一个主类,最关键的就是这个@SpringBootApplication
注解。
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
@SpringBootApplication
注解里面主要有三个注解:
-
@SpringBootConfiguration 表明这是一个Configuration
-
@ComponentScan 用于标注扫哪些包
-
@EnableAutoConfiguration 开启自动配置
其中完成的两个动作
- @AutoConfigurationPackage 里面是 @Import({Registrar.class})
- @Import({AutoConfigurationImportSelector.class}) 关键的就是把AutoConfigurationImportSelector.class注册到容器当中
在整个SpringBoot当中会见到非常多的xxxAutoConfiguration类,这里面储备的就是各种相关的配置。而对于SpringMVC来说,主要的配置就在WebMvcAutoConfiguration中。
看一下WebMvcAutoConfiguration的注解
@Configuration(
proxyBeanMethods = false
) // 不会创建代理对象
@ConditionalOnWebApplication(
type = Type.SERVLET
) // web应用才初始化
@ConditionalOnClass({
Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class}) //这些类加载了才初始化
@ConditionalOnMissingBean({
WebMvcConfigurationSupport.class}) //不存在这个类才初始化
@AutoConfigureOrder(-