SpringBoot工作原理

优点:自动装配,起步依赖

起步依赖

原理就是maven的依赖传递

【A依赖B、B依赖C….,则我导入依赖A的时候,B,C都会被maven加载进来】

重点看看自动装配

概念:

当Spring容器启动后,一些配置类、bean对象就自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

(SpringBoot原理、SpringBoot自动配置原理):

在Spring Boot项目中的引导类上有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:

@SpringBootConfiguration ——表明当前是配置类,因此我们也可以在启动类下去声明第三方Bean对象

@EnableAutoConfiguration——实现自动化配置的核心注解

@ComponentScan——进行扫包【范围:默认为当前启动类所在包及其子包,因此如果在这个范围外配置了Bean、Component注解的类是不会被自动装配成Bean的】

自动装配的几个方案:

通过@ComponentScan添加扫描的范围【比较繁琐,需要知道第三方库所在的包名,如果库多了,我还需要一个一个手动去添加】

通过@Import导入,SpringBoot帮我们封装好了。@EnableAutoConfiguration注解

【封装了@Import注解】

含义是导入了这个类【实现了ImportSelector接口,所以必须实现selectImports方法】

该方法的返回值为String类型数组,即存放的是需要自动装配的类名

返回值为存放字符串的List集合,通过读取META-INF/spring.factories【springBoot3.0版本之后开始不建议用了,但是还有,在3.2版本之后废弃】 以及

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration

@EnableAutoConfiguration注解基于@Import注解导入对应的配置选择器,内部就是读取了该项目和该项目引用的Jar包的classpath路径下META—INFO/ spring.factories文件中所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解决定是否需要将其导入到Spring容器中

条件注解有:

@ConditionalOnClass:判断是否有对应的字节码class文件,如果有则加载当前类,把这个配置类的所有Bean放入Spring容器使用

@ConditionalOnMissingBean:判断环境中是否有对应bean,才注册bean到IOC容器...等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/323920.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攻略:ChatGPT3.5~4.0(中文版)国内无限制免费版(附网址)【2024年5月最新更新】

一、什么是ChatGPT? 1、ChatGPT的全名是Chat Generative Pre-trained Transformer,其中"chat"表示聊天。"GPT"则是由三部分组成:生成式(generative)意味着具有创造力;预训练&#xff0…

LeetCode 难题解析 —— 正则表达式匹配 (动态规划)

10. 正则表达式匹配 思路解析 这道题虽然看起来不难理解,但却存在多种可能,当然这种可能的数量是有限的,且其规律对于每一次判别都使用,所以自然而然就想到用 动态规划 的方法啦 接下来逐步分析可能的情况: &#x…

3---Linux编译器gcc/g++

一、程序的翻译过程:ESc->iso 1.1预处理:c->c 主要功能:宏替换、头文件的展开、条件编译、去注释;目的是让代码变得纯粹。条件编译,可以实现对代码的裁剪。比如对于不同用户,设置不同的宏常量&…

详解分布式锁

知识点: 单体锁存在的问题: 单体锁,即单体应用中的锁,通过加单体锁(synchronized或RentranLock)可以保证单个实例并发安全 单体锁是JVM层面的锁,只能保证单个实例上的并发访问安全 如果将单…

java JMH 学习

JMH 是什么? JMH(Java Microbenchmark Harness)是一款专用于代码微基准测试的工具集,其主要聚焦于方法层面的基准测试,精度可达纳秒级别。此工具由 Oracle 内部负责实现 JIT 的杰出人士编写,他们对 JIT 及…

鸿蒙内核源码分析(任务切换篇) | 看汇编如何切换任务

在鸿蒙的内核线程就是任务,系列篇中说的任务和线程当一个东西去理解. 一般二种场景下需要切换任务上下文: 在线程环境下,从当前线程切换到目标线程,这种方式也称为软切换,能由软件控制的自主式切换.哪些情况下会出现软切换呢? 运…

【AutoGPT】踩坑帖(follow李鱼皮)

本文写于2024年5月7日 参考视频:AutoGPT傻瓜式使用教程真实体验! 对应文章:炸裂的AutoGPT,帮我做了个网站! 平台:GitPod 云托管服务 原仓库已经改动很大,应使用的Repo为:Auto-GPT-ZH…

应用层协议之 DNS 协议

DNS 就是一个域名解析系统。域名就是网址,类似于 www.baidu.com。网络上的服务器想要访问它,就得需要它对应的 IP 地址,同时,每个域名对对应着一个 / N个 IP 地址(即对应多台服务器)。 因此,为了…

如何编译不同目录下的两个文件

1.直接编译 2.打包成动静态库进行链接

【bug记录】清除僵尸进程,释放GPU显存

目录 1. 为什么会出现这种情况?2. 解决方案方法一:使用 fuser 命令方法二: 3. 小贴士 在进行深度学习或其他需要GPU支持的任务时,我们有时会发现虽然没有可见的进程在执行,但GPU资源却意外地被占用。这种情况往往会阻碍…

如何确保UDP文件传输工具有最低稳定的传输速度?

在当前日新月异的数字时代背景下,文件传输工具已经成为我们日常生活与工作中不可或缺的一部分,尤其针对那些频繁涉及即时数据交互与多媒体流通的场景。 UDP协议,以其突出的高速传输与低延迟特性,脱颖而出成为众多用户的首选。不过…

这3种深拷贝实现,你都知道吗?

目录: 1、JSON.parse 2、structuredClone 3、cloneDeep

实习报告怎么写?笔灵AI实习体验报告模版分享:AI产品前端实习生

实习报告怎么写?笔灵AI实习体验报告模版可以帮你 点击即可使用:https://ibiling.cn/scene/inex?fromcsdnsx 下面分享AI产品前端实习生的实习报告 尊敬的导师和领导们:首先,我想对你们表达我的诚挚感谢,感谢你们给我…

C# WinForm —— 12 ListBox绑定数据

ListBox加载大量数据时,避免窗体闪烁的方法: 在加载语句的前后分别加上 BeginUpdate()方法 和 EndUpdate()方法 指定一个集合为绑定的数据源 1. 首先,右键项目,添加类 2. 在新建的类文件中添加属性值信息 3. 构建初始化的对象…

LeetCode 142.环形链表Ⅱ

题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中,通过命令行的方式,快速、方便安装适用于Linux的Windows子系统(Windows Subsystem for Linux,WSL)的方法。 WSL是由微软开发的一项功能,允许在Windows操作系统上运行Linux发行版系统…

Adobe-Premiere-CEP 扩展 入门-视频剪辑-去气口插件-Silence Remover

短视频,这两年比较火,不要再问为什么用Premiere,非常难用,为什么不用某影,某些国内软件非常接地气简单,又例如某音资深的视频短编辑就很好用了。。。 Premiere二次开发调试难,不如自己搞个cons…

Ftp笑脸漏洞(VSFTPD 2.3.4)复现(后门漏洞)

Ftp笑脸漏洞(VSFTPD 2.3.4)复现(后门漏洞) 一、原理二、复现准备三、漏洞复现四、Metasploit利用脚本复现 一、原理 vsftpd 是“ very secure FTP daemon ”的缩写,安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类…

学习笔记——字符串(单模+多模+练习题)

单模匹配 Brute Force算法(暴力) 算法思想 母串和模式串字符依次配对,如果配对成功则继续比较后面位置是否相同,如果出现匹配不成功的位置,则j(模式串当前的位置)从头开始,i&…

Qt——信号 和 槽

目录 概述 信号和槽的使用 自定义信号和槽 带参数的信号和槽 概述 在Linux系统中,我们也介绍了信号的产生、信号的检测以及信号的处理机制,它就是系统内部的通知机制,也可以是一种进程间通信的方式。在系统中有很多信号,我们可…