当前位置: 首页 > news >正文

Springboot 自动化装配的原理

Springboot 自动化装配的原理

SpringBoot 主要作用为:起步依赖、自动装配。而为了实现这种功能,SpringBoot 底层主要使用了 @SpringBootApplication 注解。

首先,@SpringBootApplication 是一个复合注解,它结合了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解的功能。这个注解通常被用在主启动类上,用于开启 SpringBoot 的自动配置和组件扫描。

  1. @Configuration:表示 @SpringBootApplication 即为引导类同样也为配置类;
  2. @ComponentScan:让 SpringBoot 自动扫描当前包及其子包中的 @Component@Repository@Service@Controller 等能识别的注解的类,并将它们注册为 Bean。
  3. @EnableAutoConfiguration:自动装配的核心注解,底层是一个 @Import 注解,会导入一个 AutoConfigurationImportSelector 这个配置类,会自动执行 selectImports 方法,最终会去调用 SpringFactoriesLoader.loadFactoryNames 方法,去扫描 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中所有信息,加载进内存封装成一个数组,最后会根据各种条件(起步依赖、@Conditional 相关注解)进行过滤,找到匹配条件的全类名,并封装成字符串数组到内存中。再调用 run 方法时,通过反射创建对象并交给 Spring 容器管理。
http://www.lryc.cn/news/544689.html

相关文章:

  • Linux——进程池
  • Qt基于等待条件QWaitCondition实现的任务队列模型示例
  • 微服务即时通信系统---(六)语音识别子服务
  • JavaWeb基础专项复习5——请求对象和响应对象request and response
  • mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4
  • 大模型WebUI:Gradio全解12——LangChain原理、架构和组件(3)
  • redis --- 相关基础知识整理
  • 如何用 Python 进行机器学习
  • 《Effective Objective-C》阅读笔记(下)
  • 解释Promise的工作原理及其状态
  • SHELL32!ILCombine函数分析之连接两个idl
  • es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
  • Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用
  • ollama和open-webui部署ds
  • 泛微Ecode新增Button调用服务器中的JSP页面里的方法
  • LVS+Keepalived高可用群集配置案例
  • 杰发科技AC7801——滴答定时器获取时间戳
  • Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)
  • Cursor+pycharm接入Codeuim(免费版),Tab自动补全功能平替
  • spring--ApplicationContext和BeanFactory的区别(源码)
  • HTMLS基本结构及标签
  • 【蓝桥杯嵌入式】各模块学习总结
  • Vue的项目创建以及项目目录与组合式API
  • 数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)
  • 前端八股——JS+ES6
  • Python 课堂点名桌面小程序
  • 【Java基础】Java中new一个对象时,JVM到底做了什么?
  • C#中的字典怎么使用?
  • vue框架后遗症∶被遗忘的dom操作
  • 进程 ─── linux第10课