SpringBoot自动配置的原理-@SpringBootApplication
创始人
2024-03-27 20:32:13
0

文章目录

  • 1自动配置原理
    • 1.1 @SpringBootConfiguration
    • 1.2.@ComponentScan
    • 1.3 @EnableAutoConfiguration
  • 2 为什么不使用 @Import 直接引入自动配置类

学完这篇文章,可以了解到 SpringBoot 自动配置原理

1自动配置原理

@SpringBootConfiguration 是一个组合注解,由 @ComponentScan@EnableAutoConfiguration@SpringBootConfiguration 组成

在这里插入图片描述

1.1 @SpringBootConfiguration

@SpringBootConfiguration 与普通 @Configuration 相比,唯一区别是前者要求整个 app 中只出现一次

1.2.@ComponentScan

excludeFilters - 用来在组件扫描时进行排除,也会排除自动配置类

1.3 @EnableAutoConfiguration

@EnableAutoConfiguration 也是一个组合注解,由下面注解组成:

  • @AutoConfigurationPackage – 用来记住扫描的起始包

  • @Import(AutoConfigurationImportSelector.class) 用来加载 META-INF/spring.factories 中的自动配置类,AutoConfigurationImportSelector实现 DeferredImportSelector 接口,此接口保证主配置加载完了才会去加载从属配置
    在这里插入图片描述

2 为什么不使用 @Import 直接引入自动配置类

有两个原因:

  • 让主配置类和自动配置类变成了强耦合,主配置类不应该知道有哪些从属配置
  • 直接用 @Import(自动配置类.class),引入的配置解析优先级较高,自动配置类的解析应该在主配置没提供时作为默认配置

因此,采用了 @Import(AutoConfigurationImportSelector.class)

  • AutoConfigurationImportSelector.class 去读取 META-INF/spring.factories 中的自动配置类,实现了弱耦合。
  • 另外 AutoConfigurationImportSelector.class 实现了 DeferredImportSelector 接口,让自动配置的解析晚于主配置的解析(主配置加载完了才会去加载从属配置)

相关内容

热门资讯

原创 在... 在古代,被皇帝赐死其实是一种特殊的待遇,而不仅仅是死亡本身值得关注,更应看赐字所体现的意义。 首...
原创 2... 近日,拥有287万粉丝的抖音网红主播王某强(账号名:某某超市)因被曝多次犯下刑事罪行引发舆论哗然,相...
全球货币政策为何出现明显分化? 2025年岁末,全球金融市场出现“超级央行周”。 从12月10日开始,美国、日本、英国、欧盟、俄罗斯...
广汽自主品牌“三担责”政策发布 IT之家 12 月 28 日消息,广汽集团今日正式发布自主品牌“三担责”政策:三电问题自燃、电池衰减...
原创 他... John McAvoy 是一位来自英国的铁人三项运动员,创造了多个世界纪录,其中包括100,000米...
原创 高... 12月26日这一天,对日本右翼势力来说,具有非常特殊的意义,甚至可能成为东亚局势的一个重要导火索。日...
石景山检察院:侵犯知识产权犯罪... 新京报讯(记者张静姝)12月24日上午,北京市石景山区人民检察院(以下简称“石景山区检察院”)在中关...
暖心!女子买鸭起纠纷,拍摄者自... 智慧中国讯(马泽川)2025年12月26日,湖南衡阳一市场内上演了暖心一幕。一名女子在老人摊位购买鸭...
原创 民... 如今,律师这个职业在社会上的口碑并不特别好,主要原因是有些律师缺乏正义感。在律师圈里,有一些知名律师...
为促进民用航空事业高质量发展提... 法治日报全媒体记者 蒲晓磊 2025年12月27日,十四届全国人大常委会第十九次会议表决通过新修订的...