springboot自动装配的原理
1.SpringBoot加载非 @SpringBootApplication 包以及自包Bean
①@ComponentScan组件扫描
@ComponentScan("com.bite.autoconfig") // 添加包的扫描路径
@SpringBootApplication
public class SpringAutoconfigApplication {public static void main(String[] args) {SpringApplication.run(SpringAutoconfigApplication.class, args);}
}
②@Import 导⼊(使⽤@Import导⼊的类会被Spring加载到IoC容器中)
可以导入的类有三种:
①普通类(被@Compent修饰的类或不加@Compent的类也可以)
②配置类(被@Comfiguration修饰的类含有@Bean方法注解的配置类)
③导入 ImportSelector 接口实现类
③自定义@EnableXxxx注解,封装@Import注解(springboot源码就是这样弄的)
这个方法是基于方法②进行封装的
2.springboot原理分析
阅读源码的流程图:
核心注解的关系图:
@EnableAutoConfiguration注解 中的两个注解的作用:
- @Import({AutoConfigurationImportSelector.class}):找到需要自动配置的类,返回配置类列表。
- @AutoConfigurationPackage:指定包扫描范围(主类所在包),间接影响某些自动配置类的行为。