优点:自动装配,起步依赖
起步依赖
原理就是maven的依赖传递
【A依赖B、B依赖C….,则我导入依赖A的时候,B,C都会被maven加载进来】
重点看看自动装配
概念:
当Spring容器启动后,一些配置类、bean对象就自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。
(SpringBoot原理、SpringBoot自动配置原理):
在Spring Boot项目中的引导类上有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:
@SpringBootConfiguration ——表明当前是配置类,因此我们也可以在启动类下去声明第三方Bean对象
@EnableAutoConfiguration——实现自动化配置的核心注解
@ComponentScan——进行扫包【范围:默认为当前启动类所在包及其子包,因此如果在这个范围外配置了Bean、Component注解的类是不会被自动装配成Bean的】
自动装配的几个方案:
通过@ComponentScan添加扫描的范围【比较繁琐,需要知道第三方库所在的包名,如果库多了,我还需要一个一个手动去添加】
通过@Import导入,SpringBoot帮我们封装好了。@EnableAutoConfiguration注解
【封装了@Import注解】
含义是导入了这个类【实现了ImportSelector接口,所以必须实现selectImports方法】
该方法的返回值为String类型数组,即存放的是需要自动装配的类名
返回值为存放字符串的List集合,通过读取META-INF/spring.factories【springBoot3.0版本之后开始不建议用了,但是还有,在3.2版本之后废弃】 以及
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration
@EnableAutoConfiguration注解基于@Import注解导入对应的配置选择器,内部就是读取了该项目和该项目引用的Jar包的classpath路径下META—INFO/ spring.factories文件中所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解决定是否需要将其导入到Spring容器中
条件注解有:
@ConditionalOnClass:判断是否有对应的字节码class文件,如果有则加载当前类,把这个配置类的所有Bean放入Spring容器使用
@ConditionalOnMissingBean:判断环境中是否有对应bean,才注册bean到IOC容器...等等