要想了解springboot自动配置,首先要了解下SpringFactoriesLoader

@SpringBootApplication 启动类要加的一个注解,其中包含
@SpringBootConfiguration 不是主要的,就类似一个configuration @EnableAutoConfiguration 自动配置就在该注解里实现
包含两个注解

@AutoConfigurationPackage 扫描启动类包下的,注册bean (@Bean @Compent注解的类)
@Import({AutoConfigurationImportSelector.class})
import注解,不熟悉的可以了解下,有三种实现。其中一种方式就是对实现ImportSelector的类,执行
selectImports(),对返回的类进行注册
关注这个AutoConfigurationImportSelector标红方法,就是获取所有META-INF下spring.factories中
org.springframework.boot.autoconfigure.EnableAutoConfiguration作为key对应的使用@Configuration注解的类。@Import会注册

这里就是用到了SpringFactoriesLoader的loadFactoryNames

可以看下spring-boot-autoconfigure.jar下的spring.factories其中配置了很多自动加载的类,aop,amqp等等
本文详细解析了SpringBoot自动配置的工作机制,从@SpringBootApplication的注解开始,讲解了@SpringBootConfiguration、@EnableAutoConfiguration和@Import的作用。重点探讨了@AutoConfigurationPackage如何扫描启动类包下并注册bean,以及@Import导入的AutoConfigurationImportSelector如何根据SpringFactoriesLoader加载META-INF/spring.factories中的@EnableAutoConfiguration对应的配置类。通过这种方式,SpringBoot能够自动配置大量如AOP、AMQP等模块。
2267

被折叠的 条评论
为什么被折叠?



