spring boot自动装配原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot自动装配原理相关的知识,希望对你有一定的参考价值。

参考技术A

首先打开一个基本的springboot项目,点进去@SpringBootApplication注解。

可以根据名字知道实现自动装配应该是上面的@EnableAutoConfiguration注解,继续点进去

这时候对spring注解比较了解的同学应该能感觉到实现原理就在@Import(AutoConfigurationImportSelector.class)这个注解中,@Import注解的参数可以是静态类(用作直接导入)也可以是实现了ImportSelector接口的类,当是实现了ImportSelector会根据实现的selectImports方法来对类进行导入。让我们看看AutoConfigurationImportSelector的实现

图中loadmetadata的方法是加载项目的基本配置数据信息,而getAutoConfigurationEntry方法则是自动装配的逻辑,继续点进去

还是在加载配置,继续点进去

其实到这一步基本清楚了,做的这些事情都是在加载类,那么自动装配到底加载的是什么类呢,这里从外部传入的factoryname是Enableautoconfiguration.class

点进去加载逻辑可以看到是在加载FACTORIES_RESOURCE_LOCATION路径下的类。

会自动扫描所有项目下FACTORIES_RESOURCE_LOCATION这个路径下的类,那么这个路径是啥?

总结:到这里基本清楚了,springboot的自动装配就是通过自定义实现ImportSelector接口,从而导致项目启动时会自动将所有项目META-INF/spring.factories路径下的配置类注入到spring容器中,从而实现了自动装配。

相关的starter和自定义starter都是根据这个实现的。后续有空的话还会写一下如何实现自定义starter的随笔。

以上就是springboot 自动装配的原理,还有不懂的地方欢迎关注私聊我,很高兴为你解答

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配

前言

Spring Boot 自动装配定义与自定义starter,基于约定大于配置的原则,实现Spring组件自动装配的目的。

 

装配的依赖(方式)

 

模式注解、@Enable模块、条件装配、工厂加载机制。

激活自动化装配、实现自动化装配、配置自动装配实现。

底层装配技术

  1. Spring 模式注解装配
  2. Spring @Enable模块装配
  3. Spring条件装配
  4. Spring工厂加载机制
  • 实现类: SpringFactoriesLoader
  • 配置资源:META-I

以上是关于spring boot自动装配原理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配

spring boot自动装配原理@EnableAutoConfiguration

从源码中理解Spring Boot自动装配原理

深度剖析Spring Boot自动装配机制实现原理

Spring Boot自动装配原理初探

spring boot 自动装配的原理