读了一下源码,找了一下自动装配的原因。
1.SpringBoot项目使用主类启动,其核心注解是:@SpringApplication注解
2.进入@SpringApplication注解,在这个注解里面,最主要的注解就是:@EnableAutoConfiguration,看名字就能看出这是进行自动装配的注解
3.进入@EnableAutoConfiguration注解,会发现这其实就是通过注解:@import注解来完成导入配置的功能
4. SpringFactoriesLoader.loadFactoryNames() 核心方法读取 ClassPath 目录下面的 META-INF/spring.factories 文件。找到进入内部类AutoConfigurationImportSelector.class,SpringFactoriesLoader.loadFactoryNames() 核心方法读取 ClassPath 目录下面的 META-INF/spring.factories 文件
5.spring.factories 文件中配置了SpringBoot自动配置类
6.总结:
进入@SpringApplication注解;
找到@EnableAutoConfiguration注解,开启自动配置;
进入注解@Import;
找到SpringFactoriesLoader.loadFactoryNames() 核心方法;
读取 ClassPath 目录下面的 META-INF/spring.factories 文件; spring.factories 文件中装配了常见的自动配置