SprinBoot集成了Spring,包含其IOC(依赖注入)和AOP(面向切面编程)核心原理,两者最大的区别是SpringBoot具有自动配置的原理。
1.SpringBoot自动配置概述
SpringBoot的自动配置是指其从META-INF的spring.factoris文件中加载需要自动配置的类,然后生成对应的Bean,注入到SPring容器中,交给SPring容器管理。
2.SpringBoot自动配置原理
- 在SpringBoot项目中,主启动类上面有一个注解SpringBootApplication注解,它对@Configuration、@ComponentScan以及@EnableAutoConfiguration等三个注解进行了封装,@EnableAutoConfiguration注解是SpringBoot实现自动配置的核心注解。
- 该注解通过@Import注解导入了一个@AutoConfigurationImportSelector类,该类实现了一个ImportSelector导入器接口,该接口中存在一个selectImports()方法。该方法的返回值是一个存储Spring中类全名的数组。
- AutoConfigurationSelectors类重写了selectImports()方法,通过重写后的selectImports()方法读取META-INF下spring.factories文件下配置类的全类名。
- 这些配置类定义的Bean会根据条件注解所指定的条件决定是否导入Spring容器中。
3.SpringBoot中starter的原理
其实,SpringBoot中starter的原理基于两点,分别是起步依赖和自动配置。
3.1 起步依赖
起步依赖是指将具有某种功能的依赖打包到一起 ,简化依赖导入的过程。
3.2 自动配置
在SpringBoot中的@SpringBootApplication注解中包含一个@EnableAutoConfiguration注解,该注解就是自动配置的核心注解。@EnableAutoConfiguration注解通过@Import注解导入了一个名为@AutoConfigurationImportSelector类,该类实现了ImportSelector导入器接口,该接口中有一个返回值为Spring中全类名的数组。AutoConfigutationImportSelectot类通过重写该方法读取META-INF中spring.factories中配置类的全类名。这些配置类定义的Bean根据条件注解决定是否导入到Spring容器中。