SpringBoot原理-02.自动配置-概述

一.自动配置

所谓自动配置,就是Spring容器启动后,一些配置类、bean对象就自动存入了IOC容器当中,而不需要我们手动声明,直接从IOC容器中引入即可。省去了繁琐的配置操作。

我们可以首先将spring项目启动起来,里面有一项 里面有一项beans点击application

里面列出了我们当前spring项目中IOC容器里所有的bean对象。我们可以看到有CommonConfig,里面有个bean对象reader,这与我们的代码一致,类型是SAXReader,也一致。

我们发现还有一个CommonConfig类,里面也有一个bean对象commonConfig,为什么还有一个这个bean对象呢?我们可以打开@Configuration注解。

 发现其就是基于@Component注解的,因此这个配置类也是spring的IOC容器的一部分。

还有我们自己定义的bean

除了我们自己定义的类,这里还有spring自动生成的配置类,比如有一个配置类叫GsonAutoConfiguration,里面有一个bean对象gson。类型也是Gson。这个bean是Google当中提供的,用来处理json格式的数据,如果我们想使用,直接使用@Autowired注入进来即可。 我们准备一个单元测试类:

package com.itheima;import org.springframework.boot.test.context.SpringBootTest;/**
* 自动配置原理测试
*/@SpringBootTest
public class AutoConfigurationTests {@AutoWiredprivate Gson gson;@Testpublic void TestJson() {String json = gson.toJson(Result.success());System.out.println(json);}    
}

可以通过@Autowired直接注入这个Gson对象,那是因为IOC容器中存在这个bean对象,那么这个bean对象是哪里来的呢?我们并未没有声明Google提供的这个Gson对象,但可以直接通过@Autowired从Spring容器中注入这个bean对象,这个就是SpringBoot在启动的时候为我们自动配置好的。

后面我们将研究SpringBoot自动配置的原理。研究SpringBoot自动配置的原理就是在研究在SpringBoot项目当中我们引入依赖之后,是如何将依赖jar包当中所定义的bean以及配置类加载到spring的IOC容器中的。

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

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

相关文章

内容中台与企业内容管理架构解析

内容中台技术架构解析 内容中台的技术架构以数据资产化和服务API化为核心,通过解耦内容生产与消费环节构建数字化基础设施。其架构通常包含统一内容池、智能处理引擎和开放接口层三大模块:统一内容池通过标准化元数据模型对多源异构内容进行结构化存储&…

DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库

项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! ​ ​ 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…

密码学(哈希函数)

4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…

网络流算法: Edmonds-Karp算法

图论相关帖子 基本概念图的表示: 邻接矩阵和邻接表图的遍历: 深度优先与广度优先拓扑排序图的最短路径:Dijkstra算法和Bellman-Ford算法最小生成树二分图多源最短路径强连通分量欧拉回路和汉密尔顿回路网络流算法: Edmonds-Karp算法网络流算法: Dinic算法 环境要求 本文所用…

R语言+AI提示词:贝叶斯广义线性混合效应模型GLMM生物学Meta分析

全文链接:https://tecdat.cn/?p40797 本文旨在帮助0基础或只有简单编程基础的研究学者,通过 AI 的提示词工程,使用 R 语言完成元分析,包括数据处理、模型构建、评估以及结果解读等步骤(点击文末“阅读原文”获取完整代…

深度学习简介

目录 一、剖析,什么是深度学习?二、深度学习人工神经网络、机器学习、人工智能关系三、深度学习的发展3.1 从感知机到人工神经网络1. 早期发展2. 陷入低谷3. 短暂复兴4. 再次受挫5. 深度突破 3.2 深度学习时代1. 语音领域突破2. 大规模图像数据库3. Alex…

进行性核上性麻痹患者的生活护理指南

进行性核上性麻痹是一种神经系统退行性疾病,合理的生活护理能有效改善症状,提高生活质量。 居家环境要安全。移除地面杂物,铺设防滑垫,安装扶手,降低跌倒风险。在浴室、厨房等湿滑区域要特别加强防护措施。建议在床边、…

【数据结构】链表与顺序表的比较

链表和顺序表是两种常见的数据结构,各有优缺点,适用于不同的场景。 ### 顺序表(数组) 顺序表在内存中连续存储元素,支持随机访问。 **优点:** 1. **随机访问**:通过索引直接访问元素&#xf…

osgEarth安装总结

第一步:安装OSG 直接通过git下载源码,使用cmake进行编译, git clone --depth 1 https://github.com/openscenegraph/OpenSceneGraph.git mkdir build cd build cmake .. make sudo make isntall编译过程中缺什么库,就安装什么库 …

网络安全-使用DeepSeek来获取sqlmap的攻击payload

文章目录 概述DeepSeek使用创建示例数据库创建API测试sqlmap部分日志参考 概述 今天来使用DeepSeek做安全测试,看看在有思路的情况下实现的快不快。 DeepSeek使用 我有一个思路,想要测试sqlmap工具如何dump数据库的: 连接mysql数据库&#…

25物理学研究生复试面试问题汇总 物理学专业知识问题很全! 物理学复试全流程攻略 物理学考研复试调剂真题汇总

正在为物理考研复试专业面试发愁的你,是不是不知道从哪开始准备? 学姐告诉你,其实物理考研复试并没有你想象的那么难!只要掌握正确的备考方法,稳扎稳打,你也可以轻松拿下高分!今天给大家准备了…

KTV点歌系统

收藏关注不迷路!! 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多…

开源绝版经典小游戏合集

随着生活节奏的日益加快,我们常常需要一些小游戏来缓解疲惫的身心。过去,Windows 7自带的扫雷、蜘蛛纸牌等小游戏深受大家喜爱,但随着系统的更新换代,这些经典游戏逐渐淡出了人们的视野。我也曾花费不少时间寻找这些游戏&#xff…

【AI Coding】Windsurf:【Prompt】全局规则与项目规则「可直接使用」

先看效果 这是在windsurf中与ai对话的反馈 为什么要写这个规则(Prompt) 写的这份针对windsurf的全局规则,详细的涵盖了前端的各个方向:技术栈、测试、工程、性能优化、回答规范 通过提前预设一些关键词,可以提高回答…

传输层协议TCP

TCP全称为 传输控制协议(Transmission Control Protocol),就是要对数据的传输进行一个详细的控制。 TCP协议段格式 源端口:发送方的端口号,用来标识发送端的应用程序或进程。 目标端口:接收方的端口号,用来标识接收端…

SpringBoot 日志 与 门面模式(外观模式)

日志的使用 先引入日志对象,注意是 引入的是 org.slf4j 这个包下的 Logger 在传参上:可以传入类名,或者一个字符串,该参数表示日志名称 例如如果传入 “aaaa”,那么日志的名称就是 aaaa RequestMapping("/log&…

【MySQL篇】数据类型

目录 前言: 1,数据类型的分类 ​编辑 2 ,数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3,字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …

网络类型及数据链路层协议

网络类型的分类: p2p----point to point---点到点网络MA---Multi-Access---多点接入网络 BMA--- Broadcast Multi-Access Network ---广播型多点接入网络NBMA--- Non-Broadcast Multi-Access Network ---非广播型多点接入网络 数据链路层协议: MA网络…

序列化选型:字节流抑或字符串

序列化既可以将对象转换为字节流,也可以转换为字符串,具体取决于使用的序列化方式和场景。 转换为字节流 常见工具及原理:在许多编程语言中,都有将对象序列化为字节流的机制。例如 Python 中的 pickle 模块、Java 中的对象序列化…

企业微信里可以使用的企业内刊制作工具,FLBOOK

如何让员工及时了解公司动态、行业资讯、学习专业知识,并有效沉淀企业文化?一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧 1.登录与上传 访问FLBOOK官网,注册账号后上传排版好的文档 2.选择模板 FLBOOK提供了丰富的…