SpringBoot自动装配原理

一、Spring Boot 自动配置简介

Spring Boot 的自动配置功能旨在根据项目中的类路径、配置文件、环境变量等因素,自动地配置Spring框架的相关组件。这意味着开发者在大多数情况下不需要手动编写大量的配置代码,Spring Boot 会根据已有的约定自动完成这些配置。

二、自动配置的核心注解

1.@SpringBootApplication注解:

这是 Spring Boot 项目的启动类注解,它组合了 @SpringBootConfiguration@EnableAutoConfiguration 和 @ComponentScan 三个注解。

 

@SpringBootConfiguration
作用: SpringBoot 的配置类 ,标注在某个类上 , 表示这是一个 SpringBoot 的配置类;
@ComponentScan
这个注解在 Spring 中很重要 , 它对应 XML 配置中的元素。
作用:自动扫描并加载符合条件的组件或者 bean , 将这个 bean 定义加载到 IOC 容器中
@EnableAutoConfiguration
开启自动配置功能

2.@EnableAutoConfiguration 注解:

@EnableAutoConfiguration 注解通过 Spring 提供的 @Import 注解导入了
AutoConfigurationImportSelector 类( @Import 注解可以导入配置类或者 Bean 到当前类中)。
AutoConfigurationImportSelector  是 Spring Boot 中一个重要的类,它实现了  Importselect接口,用于实现自动配置的选择和导入。具体来说,它通过分析项目的类路径和条件来决定应该导入哪些自动配置类。
AutoConfigurationImportSelector 类中 getCandidateConfigurations 方法会将所有自动配置类的信息以 List 的形式返回。这些配置信息会被 Spring 容器作 bean 来管理。
大致流程如下:
我们来看一下 AutoConfigurationImportSelector 的关键源码
点进getAutofigurationEntry方法
再点进getCandidateConfigurations方法中
三、条件判断Conditional

 对于每一个发现的自动配置类,AutoConfigurationImportSelector 会使用条件判断机制(通常是通过 @Conditional 注解)来确定是否满足导入条件。这些条件可以是配置属性、类是否存在、Bean是否存在等等,满足条件才会进行配置。

例如:

  • ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean
  • ConditionalOnClass当类路径下有指定类的条件下才初始化Bean
  • ConditionalOnMissingBean当容器里没有指定 Bean 的情况下才初始化Bean
  • ConditionalOnBean当容器里有指定 Bean 的条件下才初始化Bean
四、总结原理
  • @EnableAutoConfiguration 注解内部使用 @Import(AutoConfigurationImportSelector.class) 来加载配置类。
  • 配置文件位置:META-INF/spring.factories,该配置文件中定义了大量的配置类,当 SpringBoot 应用启动时,会自动加载这些配置类,初始化Bean
  • 并不是所有的Bean都会被初始化,在配置类中使用Condition来加载满足条件的Bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值