SpringBoot:SpringBoot启动加载过程 ④

news2024/9/28 17:31:36

一、思想

      我们看到技术上高效简单的使用,其实背后除了奇思妙想的开创性设计,另一点是别人帮你做了复杂繁琐的事情。

二、从官网Demo入手

        官网就一行代码。这个就是它的启动代码。

 

        1、@SpringBootApplication注解

                ①.  三个核心注解的整合。

                        @SpringBootConfiguration  (配置注入)

                        @ComponentScan(包下bean组件扫描)

                        @EnableAutoConfiguration     (开启自动配置)

                        (每一个注解都是一个故事,目前咱们只是窥探轮廓)

                

         2、Run代码

                        ① 加载配置文件

                        ②  装载Bean容器,以及监听器启动在其中监控对象的创建过程。

                        ③  加载所有的注解的bean以及自动配置的spring.factories 设置的所有bean

                        ④ 把应用放入内嵌的tomcat服务中

    public ConfigurableApplicationContext run(String... args) {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();
        ConfigurableApplicationContext context = null;
        Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList();
        this.configureHeadlessProperty();
        SpringApplicationRunListeners listeners = this.getRunListeners(args);
        listeners.starting();

        Collection exceptionReporters;
        try {
            ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);
            ConfigurableEnvironment environment = this.prepareEnvironment(listeners, applicationArguments);
            this.configureIgnoreBeanInfo(environment);
            Banner printedBanner = this.printBanner(environment);
            context = this.createApplicationContext();
            exceptionReporters = this.getSpringFactoriesInstances(SpringBootExceptionReporter.class, new Class[]{ConfigurableApplicationContext.class}, context);
            this.prepareContext(context, environment, listeners, applicationArguments, printedBanner);
            this.refreshContext(context);
            this.afterRefresh(context, applicationArguments);
            stopWatch.stop();
            if (this.logStartupInfo) {
                (new StartupInfoLogger(this.mainApplicationClass)).logStarted(this.getApplicationLog(), stopWatch);
            }

            listeners.started(context);
            this.callRunners(context, applicationArguments);
        } catch (Throwable var10) {
            this.handleRunFailure(context, var10, exceptionReporters, listeners);
            throw new IllegalStateException(var10);
        }

        try {
            listeners.running(context);
            return context;
        } catch (Throwable var9) {
            this.handleRunFailure(context, var9, exceptionReporters, (SpringApplicationRunListeners)null);
            throw new IllegalStateException(var9);
        }
    }

                        

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是微带线和带状线

在电路板设计中&#xff0c;微带线和带状线分别是用于传输信号的两种常见的传输线路。虽然在许多方面它们很相似&#xff0c;但是它们的物理结构、传输速率、特性阻抗等方面存在很大的差异。 本文将介绍微带线和带状线的基本概念、特性和应用场景&#xff0c;并比较它们的优缺…

Snap版本的CUPS将在Ubuntu 23.10 中默认使用

导读CUPS 是一个用于 Linux 系统的开源模块化打印系统&#xff0c;最初由 Michael Sweet 开发。在 2007 年&#xff0c;苹果公司收购了 CUPS&#xff0c;并聘请了 Michael Sweet 继续开发。 CUPS 是一个用于 Linux 系统的开源模块化打印系统&#xff0c;最初由 Michael Sweet …

搭建一个免费代理IP池,妈妈再也不用担心我没有IP用了

背景 爬虫工作才刚刚开始&#xff0c;突然IP被限制了&#xff0c;怎么办&#xff1f;他们告诉我&#xff0c;可以去买代理IP呀。 可是我翻了5遍裤兜&#xff0c;查了8张银行卡&#xff0c;却只有1块钱 &#xff0c;根本买不起啊。 突然&#xff0c;隔壁部门的同事的姐姐的妈妈…

k8s pod state terminating学习笔记

文章目录 背景解决方式个人思考 背景 今天服务器重启失败&#xff0c;于是去检查k8s状态&#xff0c;发现pod一直处于terminating状态。 多次尝试删除pod但是失败了&#xff0c;于是想到可能是k8s node卡住了导致接收不到kill命令。 解决方式 所以reboot k8s node&#xff0…

华夏erp账号任意用户登录

hunter&#xff1a; web.icon"f6efcd53ba2b07d67ab993073c238a11" 访问/jshERP-boot/user/getAllList;.ico接口可查看所有用户账号密码(密码为md5值) GET /jshERP-boot/user/getAllList;.ico HTTP/1.1 Host: xxx User-Agent: Mozilla/5.0 (Windows NT 10.0; Win…

加密与解密 调试篇 动态调试技术 (四)-x64dbg/MDebug

x64dbg是开源的调试器 支持 32位和64位 Download x64dbg 我们使用64位程序进行实验 加载TraceMe64 然后我们通过之前了解到了 TraceMe是用 GetDlgItemTextA来读取我们输入的值 所以我们在x64dbg中对其进行断点 但是我们先要设置 x64dbg在加载程序的时候是在系统断点处所…

本原多项式和不可约多项式

本文讨论的&#xff0c;不做特别说明的话&#xff0c;都是在伽罗华域(Galois Fields)上。 1、不可约多项式&#xff08;Irreducible Polynomial&#xff09; 定义&#xff1a;不能写成两个次数较低的多项式乘积形式的多项式。 多项式分解网站&#xff1a;EE4253 Polynomial …

中尺度气象学期末复习笔记

中尺度气象学期末复习笔记 文章目录 中尺度气象学期末复习笔记三个表示天气的词之间的关系&#xff08;一&#xff09;天气系统的尺度划分1.1 为什么要进行尺度分析1.2 经验分类Ligda对中尺度的定义 1.3 理论分类谱分析通过无量纲数进行分类 1.4 实用分类奥兰斯基分类AEIOU分类…

如何恢复u盘数据?数据恢复,就看这4个方法!

案例&#xff1a;每次清理u盘时&#xff0c;总是会不小心删除重要的数据&#xff0c;如何恢复u盘数据呢&#xff1f; 【u盘中的数据删除了还能恢复吗&#xff1f;我昨天想把u盘里一些不需要的图片和文件删除&#xff0c;但不小心删了些有用的数据&#xff0c;有什么方法可以帮我…

【洛谷】P8306 【模板】字典树

&#xff08;最后有解释哦&#xff09; 0:所需参数 const int N3e610;int t[N][70],cnt[N],idx; char s[N]; 1.映射字符 int getnum(char x) {if(x>A&&x<Z) return x-A;else if(x>a&&x<z) return x-a26;else return x-052; } 2.插入字符串 voi…

pdf文档怎么转换成excel?分享这几个方法!

当涉及将PDF转换为Excel时&#xff0c;许多人可能会遇到困扰。PDF因其统一性、稳定性和不可编辑性而被广泛应用于日常工作和学习中。然而&#xff0c;在某些特殊情况下&#xff0c;例如在网络上找到的PDF资料中需要借鉴其中的内容制作Excel文档&#xff0c;我们需要找到方法将P…

谷歌Imagen Editor融入AI技术,助力图片创作

AI科技的应用越来越广泛&#xff0c;自然也被各个公司所重视&#xff0c;近日谷歌就推出利用AI技术的图片创作软件Imagen Editor&#xff0c;这款软件成熟以后&#xff0c;或将助力图片的创作。 近日有消息称&#xff0c;谷歌正在研发一款名为Imagen Editor生成式AI工具&…

设施管理系统

随着经济的快速发展&#xff0c;各种基础设施都在更新&#xff0c;在企事业单位中各种设施也都难以管理&#xff0c;以往传统的管理模式已经无法适应现代社会的需求&#xff0c;设备管理的滞后反而会影响设施设备的使用效果&#xff0c;因此设施设备管理系统必不可少。那么什么…

uniapp实现单选以及多选

<!-- 多选 --> <template><view class"choiceSupervisionLinkman"><view class"searchBox"><uni-search-bar :radius"8" placeholder"请输入成员名称" clearButton"none" confirm"search&q…

记录一些maven依赖冲突

目录 Mybatis-Plusswagger报错pagehelper分页失效 Mybatis-Plus <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><dependency><groupId&…

自动化的艺术

对于基础设施来说&#xff0c;很多服务都有类似的架构、数据库交互和UI&#xff0c;本文介绍了Paypal通过模板自动化基础设施微服务脚手架代码的实践&#xff0c;最大化节约了开发服务的时间并保证了服务的一致性。原文&#xff1a;The Art of Automating Automation[1] 简介 作…

6.4 构建并评价回归模型

6.4 构建并评价回归模型 6.4.1 使用sklearn估计器构建线性回归模型6.4.2 评价回归模型小结 6.4.1 使用sklearn估计器构建线性回归模型 按照研究方法划分&#xff0c;回归分析研究的范围大致如图所示&#xff1a;   在回归模型中&#xff0c;自变量与因变量具有相关关系&…

python对象与类

文章目录 简述类与对象什么是类&#xff1f;什么是对象&#xff1f;类与对象的关系什么是面向对象编程? 创建类与对象创建创建对象引用类的成员类的属性类的行为self的作用 简述类与对象 什么是类&#xff1f; 类就是包含属性和行为的一种说法&#xff0c;在程序上的class即…

深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)【上篇】

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

GPT问题记录

如何遍历切片 1.for循环 package mainimport "fmt"func main(){s : []int{1,2,3,4}for i : 0; i < len(s); i{fmt.Printf("s[%d]%d\n",i,s[i])} } 运行结果 2.range 关键字 package mainimport "fmt"func main() {s : []int{1,2,3,4,5}for in…