Spring Boot 自动装配原理

在spring boot中 需要使用第三方的一些功能 比如jpa,mybtis,security 只需要引入依赖既可以完成三方依赖配置
主要原理其实就是通过spring boot的spi机制 扫描出所有spring.factories文件 解析其中的键值 获取所有依赖的配置类 再根据order 排序加入spring 容器中 既可以完成

spring-boot 中如何完成的呢

众所周知 springboot 应用的启动类 也是一个配置文件
在@springbootapplication 中有一个@EnableAutoConfiguration注解 这个注解有使用到一个@Import(AutoConfigurationImportSelector.class) 导入一个AutoConfigurationImportSelector类 这个类实现了一个ImportSelector接口 在该接口实现中会通过一个springfactories的工具类去扫描出所有依赖下mate-inf下的spring.factories文件 解析出所有配置类的类路径

      //getSpringFactoriesLoaderFactoryClass()=org.springframework.boot.autoconfigure.EnableAutoConfiguration
	protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
		List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
				getBeanClassLoader());
		Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you "
				+ "are using a custom packaging, make sure that file is correct.");
		return configurations;
	}

最终这些配置类 会在一个BeanDefinitionRegistryPostProcessor的实现类ConfigurationClassPostProcessor中通过ConfigurationClassParser类的parse方法去解析 加载到容器中

posted @   yangqifang  阅读(295)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示