Java

一文读懂SpringBoot自动装配原理

2020-05-10  本文已影响0人  凡毓不凡

SpringBoot 版本 : 2.2.1.RELEASE
关键词:@EnableAutoConfiguration,/META-INF/spring.factories,
/META-INF/spring-autoconfigure-metadata.properties

注:本文主要讲解一些比较重要的关键步骤,不能面面俱到,若有疑问,随时保持沟通

  • 创建独立的Spring应用
  • 嵌入式Web容器(可以以可执行jar方式运行,不需要部署WAR文件)
  • 提供固化的 "starter",简化构建配置
  • 当条件满足时自动地装配Spring或第三方库
  • 提供运维特性(Production-Ready)特性,如指标信息(Metrics)、健康检查、外部化配置。
  • 不需要XML配置

1. @EnableAutoConfiguration注解

总结:在启动类上加上 @EnableAutoConfiguration 注解 或者@SpringBootApplication即可实现自动装配,推荐使用 @SpringBootApplication这个组合注解。

2. @EnableAutoConfiguration注解实现自动装配原理

  1. getAutoConfigurationMetadata()
image.png image.png image.png
  1. AutoConfigurationEntry entry = getAutoConfigurationEntry(autoConfigurationMetadata,annotationMetadata)
image.png
  1. configurations = removeDuplicates(configurations)
  1. Set<String> exclusions = getExclusions(annotationMetadata, attributes)
  1. configurations = filter(configurations, autoConfigurationMetadata)
总结:自动装配的流程
  • 添加 @SpringBootApplication 注解或者 @EnableAutoConfiguration
  • 通过 SpringFactoriesLoader.loadFactoryNames(...) 获取自动装配类,执行一系列的去重、排除等操作,然后通过过滤,通过判断当前类加载器是否是加载元数据的类加载器来决定 @ConditiionOnXXX 注解的装配过程。
  • 自动装配是SpringBoot的元数据配置文件(spring-autoconfigure-metadata.properties)中的配置类的选择性加载的过程。
  1. ☛ 文章要是勘误或者知识点说的不正确,欢迎评论,毕竟这也是作者通过阅读源码获得的知识,难免会有疏忽!
  2. 要是感觉文章对你有所帮助,不妨点个关注,或者移驾看一下作者的其他文集,也都是干活多多哦,文章也在全力更新中。
  3. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处!
上一篇 下一篇

猜你喜欢

热点阅读