SpringBoot自动装配原理解析

59 阅读1分钟

是不是一个SpringBoot项目,首先看启动类中是否有@SpringBootApplication注解,如有,那就是啦。

@SpringBootApplication注解内部其实封装了三个核心的注解,分别如下:

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

而这三个注解中最为核心的其实就是第二个@EnableAutoConfiguration注解,这个注解下又封装了一个叫@Import注解,并实现了

AutoConfigurationImportSelector.class,通过selectImports方法返回一个字符串类型的数组,这个字符串数组就是要自动装配的内容了,主要读取两个配置文件内容,分别如下:

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

META-INF/spring/spring.factories

其中spring.factories文件是为了兼容2.7之前版本,后续版本仅保留AutoConfiguration.imports文件。

而这些配置文件中的内容非常多,其实并不会全部注册到Spring的IOC容器的bean中,而是根据@Conditional开头的一些列注解条件注入的,这类的注解非常多,常见的如下:

// 当前环境存在指定的这个类时,才声明该bean

ConditionalOnClass

// 当不存在当前类型的bean时,才声明该bean

ConditionalOnMissingBean

// 配置文件中存在对应的属性和值,才注册bean到ioc容器

ConditionalOnProperty

通过以上这些步骤,SpringBoot就实现了自动配置管理了,日常开发时避免了繁琐的配置,搞懂了SpringBoot的核心思想,再去开发使用时,就非常得心应手了。