Spring Boot 自动装配

本文深入探讨了SpringBoot的自动装配原理,从@SpringBootApplication注解的组合特性开始,详细阐述了@EnableAutoConfiguration如何启动自动配置机制,以及@Componetscan的作用。通过源码分析,揭示了AutoConfigurationImportSelector在选择和加载自动配置类的过程,涉及到SpringFactoriesLoader的使用。整个流程包括从META-INF/spring.factories加载配置,到根据条件加载所需配置类。自动装配的核心在于按需加载,依赖于@Conditional注解。理解这一机制有助于更好地掌握SpringBoot项目配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动装配原理

一个springBoot项目,只要添加相关的依赖,无需配置,启动main方法就行,并且可以对全局变量文件application.properties或application.yml对项目进行设置

springBoot还定义了一套接口规范:Spring Boot在启动时,会扫描jar外部引用jar包中的META-INF/spring. factories文件,将文件中的配置信息加载到spring容器中,并执行定义中的各项操作

@SpringBootApplication

@SpringBootApplication是核心注解

在这里插入图片描述
可以把@SpringBootApplication看作是:
@SpringBootConfiguration@EnableAutoConfiguration@Componetscan这三个注解的集合

@SpringBootConfiguration:允许在上下文中注册额外的bean或者导入其他配置项

@EnableAutoConfiguration:启动SpringBoot的自动配置机制

@Componetscan:扫描被@Compent(@Service、@Controller)注解的bean,注解是会默认扫描启动类所在的包下的所有类,也可以定义不扫描bean

@EableAutoConfiguration注解的源码

在这里插入图片描述

自动装配的核心是通过AutoConfigurationUmportSelector实现的,查看源码分析:

在这里插入图片描述
AutoConfigurationUmportSelector最终实现了ImportSelector接口,也实现了ImportSelector接口中的selectImports方法。

selectImport作用:获取所有符合条件的全限定类名,这些类需要被加载到IOC容器中:

在这里插入图片描述

getAutoConfigurationEntry:主要负责加载自动配置类

在这里插入图片描述

自动装配源码执行流程

源码对应如图:

在这里插入图片描述

第一步

跳到isEnabled方法判断自动装配是否开启,默认true

在这里插入图片描述

第二步

通过调用SpringFactoriesLoader.loadFactoryName()获取exclude和excludeNama
在这里插入图片描述
在这里插入图片描述

第三步

获取所需要自动装配的所有配置类,读取META-INF/spring.factories,经过筛选,满足条件的类会被加载

在这里插入图片描述

总结

SpringBoot通过@EnableAutoConfiguration开启自动配置,通过SpringFactoriesLoader最终加载META-NIF/spring.factories中的自动配置类实现自动装配,自动装配其实就是通过@Conditional按需求加载的配置类,想要其生效就必须引入相应的spring-boot-start-xxxx依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值