springBoot 自动配置机制
- 自动配置的tomcat、springmvc等
- 默认包扫描规则
- 自定义扫描路径
- 配置默认值
- 按需加载自动配置
- 总结
自动配置的tomcat、springmvc等
导入场景,容器中就会自动配置好这个场景的核心组件
以前:dispatcherservlet、viewresolver、characterencodingfilter…都是自己配置的
现在:自动配置好的这些组件
验证:容器中有什么组件就有什么功能
public class MainApplication {
public static void main(String[] args) {
// SpringApplication.run(MainApplication.class,args);
var ico = SpringApplication.run(MainApplication.class,args);
// 获取容器中所有组件的名字
String[] names = ico.getBeanDefinitionNames();
// 挨个遍历 dispatcherServlet\beanNameViewResolver(视图解析)\characterEncodingFilter(字符编码)\multipartResolver(文件上传)
// 把以前配置的核心组件都配置好了
for(String name :names){
System.out.println("-------------------------------");
System.out.println(name);
}
}
}
默认包扫描规则
@SpringBootApplication 标注的类就是主程序类
springBoot只会扫描主程序所在的包以及下面的子包,自动的component-scan功能
自定义扫描路径
@SpringBootApplication(scanBasePackages = ‘com.atguigu’)
@ComponentScan(‘com.atguigu’) 直接指定扫描路径
配置默认值
配置文件的所有配置项是和某个类的对象值进行一一绑定
绑定了配置文件中每一项的类:配置属性类
比如:
ServerProperties绑定所有tomcat服务器有关的配置
MailProperties绑定了所有文件上传相关的配置
参照官方文档:java配置官方文档
按需加载自动配置
导入场景:spring-boot-starter-web
场景启动器除了会导入相关功能依赖,还会导入spring-boot-starter,基础核心的starter
spring-boot-starter中导入了自动匹配包spring-boot-autoconfigure,里面包含了各种场景的自动配置类
虽然全场景的自动配置都在spring-boot-autoconfigure这个包,但是不是全部开启的
导入那个场景启动那个场景
总结
导入场景启动器,触发spring-boot-autoconfigure这个包的自动配置生效,容器中就会具有相关场景的功能