SpringBoot自动配置原理

240 阅读1分钟

简介版

SpringBoot通过@EnableAutoConfiguration注解实现自动配置,这个注解通过@Import导入了AutoConfigurationImportSelector类,这个注解会去扫描META-INF/spring.factories中定义的所有自动配置类,然后加载这个配置类中定义的bean对象

2222.png

详细版

@EnableAutoConfiguration注解上使用@Import去加载了AutoConfigurationImportSelector类,该类实现了ImportSelector接口,并重写了selectImports()方法,该方法的返回值即为自动配置类的路径,Spring根据这些路径读取自动配置类,给容器中注入Bean对象.
selectImports()方法中调用了getAutoConfigurationEntry(),这个方法又调用了getCandidateConfigurations(),在该方法中调用SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包,spring.factories中定义了自动配置类的路径,扫描后将结果放入List中返回,经过上面的处理后,SpringBoot还会去掉重复的类,exclude注解排除的类,而剩下的配置类要起作用,需要满足一定的条件,这些条件是通过条件注解@ConditionalOn来实现的,可以在yml中配置 debug=true来让控制台打印自动配置报告

相关文章