看完这篇SpringBoot配置原理,你就自己手写一个吧

学习SpringBoot源码之手写一个简易版SpringBoot 很多人和我一样可能都想知道我们开发用的SpringB底层原理是什么,怎么运行的,但奈何自己能力不足读不懂源码,下面我们通过手写一个SpringBoot来了解一下SpringBoot大概原理是什么,怎么运行的。(此文是学习图灵周瑜老师手写SpringBoot的学习笔记)。PS: 下文中Xjx为本人名字缩写,读者可以自行更改为自己的名字缩写,这样整个写完还是挺有成就感的,建议改为自己名字缩写哦首先我们创建出一个项目,然后再这个项目下面创建两个模块:首先,SpringBoot是基于的Spring,所以我们手写Sp 阅读详情

每天叫醒你的不是闹钟,而是梦想

01

前言

上一篇推文我们讲了几道SpringBoot面试题,今天我们来继续深入研究SpringBoot自动配置原理

从SpringBoot的启动类入手

@SpringBootApplication:

昨天已经提过,该注解是SpringBoot的核心注解,其源码由

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

三个注解组成,而我们今天要说的就是@EnableAutoConfiguration注解

该注解的作用就是自动配置注解

进入该注解源码

从AutoConfigurationImportSelector.class这个类入手,进入源码,上篇推文提过,SpringBoot的自动配置原理就是由@Import注解注入了ImportSelectors接口的实现类AutoConfigurationImportSelector,进入ImportSelectors源码中查看

02

ImportSelector解释

对注释翻译(小编英语水平较低,勿喷):

ImportSelector接口可以实现以下几个接口:
EnvironmentAware
BeanFactoryAware
BeanClassLoaderAware
ResourceLoaderAware
且上述接口的方法会在ImportSelectors接口的方法调用之前调用

ImportSerlectors接口方法selectImports注释翻译:

选择与返回….

算了还是看有道翻译吧

猜想 : 该方法可以返回导入类的名称,也就是自动导入类的名称?

OK。继续…….

03

验证猜想

我们现在返回AutoConfigurationImportSelector类中,顺便在返回值的代码打个断点,验证我们刚刚所分析的,启动

通过debug我们可以看到AutoConfigurationImportSelector一共自动配置了40个Bean。

而@Import的作用就是为我们自动将Bean对象注入到IOC容器中

也就是在SpringBoot启动类启动的时候为什么注入了40个Bean对象。

根据上面的讲解,接下来我们通过自己手写一个SpringBoot自动配置类来对Bean对象实现自动注入到IOC容器。

04

实践

步骤:

1.       需要注入到IOC容器的Bean对象

2.       需要一个启动类来启动SpringApplication

3.       启动类需要使用@Import注解来自动注入Bean对象到IOC容器。

1. Bean对象

2. 启动类与@Import注解

3.Console(已经创建了对象,并将Bean对象注入到IOC容器中)

看完懂了?会了?评论给个666吧,哈哈哈!!!

谢谢阅读

手写SpringBoot框架 阅读SpringBoot底层源码,手写类SpringBoot框架,并附控制层,视图层路径的测试。 立即下载

相关推荐

简单手写springIOC注解模式

简单手写的springIOC容器注解模式,仅供参考,欢迎指教。

SpringBoot源码解析: 从手写一个简易版SpringBoot开始

① FcSpringApplication类代码如下所示import org//自定义run方法 public static void run(Class clazz) {//1.启动tomcat startTomcat();} //对Tomcat进行属性配置 private static void startTomcat() {try {} }

siaok的博客 1033

手写springboot

手写springboot(手写 SpringBoot 框架程 教程 1.0教程代码)

手写模拟Spring Boot自动配置功能

首先,我们定义一个自动配置属性类,用于存储配置信息。这个类将使用@ConfigurationProperties注解进行标记,以便Spring Boot能够将其属性与配置文件中的值进行绑定。java复制代码return age;然后,我们定义一个服务类,该类将作为自动配置的Bean。java复制代码通过本文的介绍,我们深入了解了Spring Boot自动配置的背景历史、业务场景、功能点以及底层原理。

喜欢猪猪 1444

Spring boot配置文件加解密详解

主要给大家介绍了关于Spring boot配置文件加解密的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

保姆级教程:Synology NAS共享文件夹从创建到权限设置的完整流程

本文提供了一份详尽的Synology NAS共享文件夹创建与权限设置指南。重点讲解了如何将NAS接入企业AD域,并利用域管理员账户进行集中身份验证和权限管理。文章从基础概念、域环境配置、文件夹创建、精细化权限分配到客户端访问与维护,完整覆盖了构建安全高效企业级文件共享空间的全流程,旨在帮助管理员实现便捷的团队协作与数据安全管理。

u9v0w的博客 552

手把手教你手写一个最简单的 Spring Boot Starter

{“address”:“拉斯维加斯”,“age”:18,“name”:“Mr.nobody”}%首先新建一个Maven工程(当然也可以其他类型例如 Gradle 工程),在pom.xml文件中引入如下依赖。fastjson 依赖是我们业务用到将 Java 对象转换为 JSON 字符串;spring-boot-configuration-processor 依赖是可选的,加入此依赖主要是打包时,自动生成配置元信息文件,并放入到 jar 中。方便使用者了解到一些配置元信息。4.0.0。

erthrerg的博客 748

PM1132-220V转5V电源芯片:SOT-23-3封装的高效电源解决方案

在现代电子设备小型化和高效化的趋势下,PM1132芯片凭借其的能力与特性,成为工业控制IoT设备及便携电器的理想电源管理方案。以下从核心技术设计挑战和应用实践展开分析。

M_D13Z476I000l的博客 804

Spring BOOT 手写一个starter并使用这个starter

Spring BOOT 手写一个starter

ProBaiXiaodi的博客 1082

petalinux i2c的配置

1.硬件平台配置 1.内核配置 cd petalinux-config -c kernel -> Device Drivers -> I2C support -> i2C Hardware Bus support -> Xilinx I2C Controller Pressing 启用CONFIG_I2C_XILINX=y 2.修改用户设备树 cd cd project-spec/meta-user/recipes-bsp/device-tree/files/ i2c2:

u013403954的博客 4312

从三极管到MOS管:单片机I/O口驱动电路设计实战解析

本文深入解析了从三极管到MOS管的单片机I/O口驱动电路设计实战经验。通过对比三极管与MOS管的本质区别,结合实际案例详细讲解了驱动电路的设计要点、优化技巧及常见问题解决方案,帮助工程师高效完成各类负载驱动设计。

weixin_29161785的博客 317

【手写一个SpringBoot简易版框架】

手写一个springboot框架

我是Java程序员廖志伟,感谢朋友们的支持! 1763

【详细】芯片设计全流程(包括每个流程需要用到的工具以及需要参与的工作人员)

一颗芯片的诞生经历了设计、制造和测试(分别对应集成电路产业链的设计业、制造业和封测业),而每一步都包含了复杂的步骤和流程。 图0-1 集成电路产业链 现在,我们重点介绍芯片设计的全流程以及每个流程需要用到的设计工具和需要参与的工作人员。 一、IC设计分类 首先对IC设计的分类做个介绍,如图1-1所示。 图1-1 IC设计分类 如图1-1所示,IC设计可以粗分为数字IC设计和射频/模拟IC设计,数字IC设计又可分为ASIC设计和FPGA/CPLD设计,此外还有一部分IC设计.

qq_36045093的博客 8万+

springboot 启动类_看完这篇SpringBoot配置原理,你就自己手写一个吧

每天叫醒你的不是闹钟,而是梦想01前言上一篇推文我们讲了几道SpringBoot面试题,今天我们来继续深入研究SpringBoot自动配置原理从SpringBoot的启动类入手@SpringBootApplication:昨天已经提过,该注解是SpringBoot的核心注解,其源码由@SpringBootConfiguration@EnableAutoConfiguration@Comp...

weixin_39534780的博客 3934

Claude Code+Cursor+Claude 4三剑合璧!5步搞定Magentic-UI的OAuth2.0集成,开发效率飙升500%,新手秒变全栈工程师

本文详细介绍了如何利用Claude Code、Cursor和Claude 4三款AI工具高效集成Magentic-UI的OAuth2.0认证系统。通过5个步骤的实战演练,开发者可快速完成从环境搭建、项目分析、代码生成到前端集成的全过程,显著提升开发效率。文章还提供了JWT令牌管理、安全配置及常见问题解决方案。

weixin_29234509的博客 453

TBOX电源方案的详细讲解与分析

输入保护电路是确保车载电子系统稳定性的关键。通过合理选择TVS二极管、保险丝和浪涌抑制器等元器件,能够有效防止来自电源系统的瞬态过电压、浪涌和过流问题,保护后续电路免受损害。针对不同的电源环境和应用场景,可以通过提升功率、优化热管理以及选择高效元器件来进一步提高系统的保护能力和可靠性。

weixin_43199439的博客 1070

SpringBoot自动装配原理分析,看完你也能手写一个starter组件

揭秘SpringBoot自动装配机制及手写starter组件

zwx900102的博客 7567

【人工智能】架构演进:基于本体论与 LLM Agent 的供应链备件决策闭环实践

本文探讨了如何将本体论(Ontology)与大语言模型(LLM)Agent结合,构建供应链备件管理的智能决策系统。针对LLM在垂直领域存在的幻觉和逻辑缺陷问题,提出通过本体论建立结构化知识框架,形成四层架构:知识建模、动态感知、深度分析和决策闭环。系统利用图数据库实例化领域本体,融合多源数据实现实时感知,结合图谱推理和时序预测进行确定性分析,最终通过工具调用完成决策执行。技术选型推荐Gemini 1.5 Pro、Neo4j和LangChain等工具,实现从自动化到智能化的升级。该架构为工业领域提供了可解释、

奶爸的编程之路,也就一周冷个三天 166

尝试手写一个框架(六)手写一套SpringBoot框架,加深对SpringBoot框架得理解

利用maven集成、内置tomcat、以及Spring相关的功能,自己构建了一个集成框架,从而加深SpringBoot的工作原理

歪桃的博客 9405

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot自动装配原理分析,看完你也能手写一个starter组件!

如果我们想要使用传统意义上的 Spring 应用,那么需要配置大量的 xml 文件才可以启动,而且随着项目的越来越庞大,配置文件也会越来越繁琐,这在一定程度上也给开发者带来了困扰,于是 SpringBoot 就应运而生了。2012 年 10 月,一个叫 Mike Youngstrom 的人在 Spring Jira 中创建了一个功能请求,要求在 Spring Framework 中支持无容器 Web 应用程序体系结构,提出了在主容器引导 Spring 容器内配置 Web 容器服务。

rita_0567的博客 800

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

带你手写starter组件,搞懂SpringBoot自动配置原理

至此,我们就实现了手写SpringBoot项目中的starter组件,进而实现了自动配置。其实从仿照druid的Datasource类中就可以发现,SpringBoot的核心机制就是可以自动配置,通过大量的自动配置,大量的bean被自动配置到容器中,这就大大简化了过去手动配置bean的过程,从而简化整个项目的开发过程,这也就是SpringBoot的最大优势所在!现在你知道SpringBoot是怎么实现自动配置的了吗?如果你还有什么疑问,可以在评论区给壹哥留言,或者关注下面的【Java架构栈https。...

一一哥 1249

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot自动配置原理及手写starter

本文是向大家介绍springboot的精髓部分-自动装配,掌握自动装配能让你更深的去理解boot框架,学会启动器(starter)的开发,能让你的开发更加便捷、得心应手、效率加倍。

weixin_43805705的博客 781

springboot自动装配原理,手写一个starter。

springboot自动装配原理,手写一个starter。

qq_51240148的博客 1135

SpringBoot-starter原理之手写

目录 一、前言 二、实现思路 2.1 命名规范 2.2 实现步骤 三、手写实现 3.1 新建第三方jar 3.2 新建starter工程 3.3 引入jar包 3.4 编写自动配置类 3.5 编写配置发现文件 3.6 打包发布 四、测试 一、前言 SpringBoot-starter的原理,在之前的文章中已作解析,可点此传送。 今天要来手动实现一个自己的SpringB...

天天向上 8107
上一篇: 试试基础的Spring Boot的面试题?(第一波)
下一篇: SpringBoot的web.xml文件在哪里?
新时代Java农民工
博客等级 码龄7年 16粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值