SpringBoot自动配置的原理-@SpringBootApplication

news/2024/10/20 19:34:06/

文章目录

  • 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 接口,让自动配置的解析晚于主配置的解析(主配置加载完了才会去加载从属配置)

http://www.ppmy.cn/news/2679.html

相关文章

【面试题】2023 中级前端面试题

前言 从前端学习到找一份合适的工作,大大小小的面试必不可少,所以我对初级前端面试题进行了初步整理,也方便自己查阅,也希望对小伙伴们有所帮助! 给大家推荐一个实用面试题库 1、前端面试题库 (面试必备&…

计算机毕业设计Java普通中学教职工信息管理系统(源码+系统+mysql数据库+lw文档)

计算机毕业设计Java普通中学教职工信息管理系统(源码系统mysql数据库lw文档) 计算机毕业设计Java普通中学教职工信息管理系统(源码系统mysql数据库lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软…

Linux邮件服务Postfix部署

我们看下邮件协议: 简单邮件传输协议(SMTP):用于发送和中转出的电子邮件。使用TCP/25端口。 邮局协议版本(POP3):用于将邮件存储到本地,占用服务器的TCP/110端口。 Internet 消息访问…

【lc刷题 day4】栈的压入、弹出序列 从上到下打印二叉树 二叉搜索树的后序遍历数列

剑指offer 31.栈的压入、弹出序列 medium class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {Stack<Integer> snew Stack<>();int i0;for(int j0;j<pushed.length;j){s.push(pushed[j]);while(!s.isEmpty()&&poppe…

【Pytorch】第 3 章 :进行数值估计的蒙特卡洛方法

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

解读小红书2022年母婴行业报告:心智种草的流量密码

母婴用户代际更迭&#xff0c;90后晋升为母婴消费主力军。新一代宝爸宝妈的关注点在哪里&#xff1f;品牌该如何通过小红书满足ta们的进阶需求&#xff0c;为母婴消费注入新活力&#xff1f; 本文将解读小红书官方发布的《2022年母婴行业人群洞察报告》&#xff0c;基于上千名用…

Linux 几种常见的自启动方式

1、rc.local 直接在/etc/rc.loacl文件中编辑需要开机自启动的脚本或程序&#xff0c;注意启动代码要放在exit之前&#xff0c;并且使用&符号后台执行&#xff0c;否则如果是死循环脚本或者程序的话就会卡住。因为是root权限启动的&#xff0c;所有执行权限比较高&#xff0…

【畅购商城】内网穿透之EchoSite

目录 概述 注册用户 抢注域名 ​​​​​​​下载客户端 ​​​​​​​编写配置文件 ​​​​​​​启动 ​​​​​​​访问 ​​​​​​​概述 EchoSite一款收费的内网映射工具&#xff08;已下架&#xff09; 花生壳&#xff1a;内网穿透工具&#xff0c;免费版…