自动配置原理

Spring提供了很多@Enablexxx的注解,这些注解都是用来开启某个功能。在SpringBoot中新加了一个@EnableAutoConfiguration注解,该注解用于开启自动配置功能。

在@EnableAutoConfiguration注解中导入(@Import)了AutoConfigurationImportSelector类,该类实现了ImportSelector接口,接口中只有一个selectImports方法,该方法可以根据一定的条件决定注入哪些Bean或者注解。

在SpringBoot的自动配置的ImportSelector实现类中,重点是getCandidateConfigurations方法,在该方法中会有SpringFactoriesLoader加载器(Spring自己实现的SPI机制)去加载每个jar包中META-INF文件夹的spring.factories文件,该文件中存储了自动配置的全限定类名(可以多个)并返回一个List,Spring会拿到这个全限定类名加载并解析,当满足这些配置类上声明的@Conditional注解条件时,则会创建该配置类的实例存入IOC容器中管理

image-20230220193427660

在Spring4框架的新特性中提供了一系列的@Conditional注解,这些注解使得在初始化配置类时,需要满足特定的条件才启用一些配置

注解说明
@ConditionalOnClass当指定的class位于类路径(classpath)上时,才会实例化装配一个Bean或者配置类
@ConditionalOnBean当Spring容器上下文中存在一个Bean时,才会实例化装配一个Bean
@ConditionalOnMissingBean当Spring容器上下文中不存在某个对象时,才会实例化装配一个Bean
@ConditionalOnExpression当表达式为True时,才会实例化一个Bean
最后修改:2023 年 02 月 20 日
如果觉得我的文章对你有用,请随意赞赏