快捷搜索: 王者荣耀 脱发

面试之springboot自动配置原理

自动配置首先从注解说起。@SpringBootApplication由三个注解组成:@CompanentScan, @EnableAutoConfiguration,@SpringBootConfiguration(其实就是@Configuration注解) ,

其中@EnableAutoConfiguration 通过@Import注解 将AutoConfigurationImportSelector .class这个类引进来。该类会去加载所有jar包的META-INFO下面的spring-factories配置文件。这里面包括spring-boot-auto-configur包目录下面的,这里面有大约130个自动装配类。也会去扫描其他包下面的spring-factories配置文件,也就是只要有META-INFO/spring-factories配置文件,springboot都会尝试把这个类加载到spring容器里面。 这里其实用到了spring里面的spi机制,如果对spi机制不懂的可以去百度学习一下。简单来说,就是你定义了一个接口,但是不提供实现,接口实现由其他系统应用实现。你只需要提供一种可以找到其他系统提供的接口实现类的能力或者说机制

spring-factories配置文件,这个文件是个key-value的形式,key是EnableAutoConfiguration的全路径名,value是各个需要自动配置的类。然后springboot默认在这个配置文件中定义了大约100多个常用的配置类,然后再根据Condition按需加载我们需要的配置类,比如在配置文件中增加了对应的配置,对应的配置类就会生效。

经验分享 程序员 微信小程序 职场和发展