SpringBoot 启动流程一

news/2024/7/7 19:33:06 标签: spring boot, java, spring, 后端, 开发语言

SpringBoot启动流程一

我们首先创建一个新的springboot工程

我们不添加任何依赖

查看一下pom文件

我们创建一个文本文档

记录我们的工作流程

我们需要的是通过打断点实现

我们首先看一下启动响应类

package com.bigdata1421.start_up;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class StartUpApplication {

    public static void main(String[] args) {
        SpringApplication.run(StartUpApplication.class, args);
    }

}

我们在这里启动

加载main方法

调用第10行的方法

这个run方法是干嘛的呢

我们进入源码查看

primarySource是指这个类

如果一个接口有四个实现类

但是你想设置某一个实现类为主体加载的

你就可以加上@Primary注解

这样这个实现类就是在自动转配中被加载的bean

我们再进入SpringApplication类里面run方法

中的run方法

是另一个run方法

我们再进入这个方法查看

我们在文本文档里记录一下

运行的是SpringApplication里面822行的这个方法

但是我们发现我们还是调用这个类里面的方法

再记录一下

我们在文本文档里再记录一下

StartUpApplication[10] -> SpringApplication.run(StartUpApplication.class, args);

SpringApplication[822] -> return run(new Class[]{primarySource}, args);

SpringApplication[826] -> return (new SpringApplication(primarySources)).run(args);

这就是一个纯调用

去new了一个SpringApplication对象 让这个对象去调用run方法

参数为args这个数组

这个参数为命令行参数

我们可以在项目配置里面编辑这个参数

然而这个我们可以分成两部分

创建一个新的对象 用这个新的对象去调用方法

StartUpApplication[10] -> SpringApplication.run(StartUpApplication.class, args);
    SpringApplication[822] -> return run(new Class[]{primarySource}, args);
        SpringApplication[826] -> return (new SpringApplication(primarySources)).run(args);

        # 加载各种配置信息 初始化各种配置对象
        SpringApplication(primarySources)


        # 初始化容器
        new  SpringApplication(primarySources).run(args)

我们的核心就是这两块的内容

加载各种配置信息 初始化各种配置对象

初始化容器

个人号推广

博客主页

朱道阳-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482


http://www.niftyadmin.cn/n/5535101.html

相关文章

Linux 程序置顶脚本

引言 当希望我们运行的程序,一直保持在最顶端运行,即置顶状态,那么有很多种方式,这边给出一种脚本方式处理。 通过持续监控,当发现活动窗口不是我们所希望的窗口时,将我们希望置顶的程序窗口置顶。 脚本 …

docker初始化运行mysql容器时自动导入数据库存储过程问题

问题:用navicat导出的数据库脚本,在docker初始化运行mysql容器时,导入到存储过程时出错。 ERROR 1064 (42000) at line 2452: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t…

AI:开发者的超级助手,而非取代者

AI:开发者的超级助手,而非取代者 引言 在这个日新月异的科技时代,人工智能(AI)已悄然渗透到我们生活的方方面面,尤其是在软件开发领域,它正以一种前所未有的方式改变着我们的工作方式。作为一名…

删除账户相关信息

功能需求 获取正确的待删除账户名杀死系统中正在运行的属于该账户的进程确认系统中属于该账户的所有文件删除该账户 1. 获取正确的待删除账户名 #让用户输入账户名 read -t 10 -p "please input account name: " accountif [ -z $account ] thenecho "account…

手机取证基础知识(一)

文章关键词:手机取证、电子数据取证 手机取证,也称为移动设备取证或智能手机取证,是数字取证的一个分支,专注于从智能手机和其他移动设备中提取、分析和呈现证据的过程。这项技术通常用于法律调查,尤其是在犯罪调查中…

notepad++安装并打开json文件

1、notepad安装 1、首先下载Notepad.exe 2、选择简体中文安装 点击下一步 点击“我接受” 选择安装目录,进行下一步安装 默认下一步 选择安装 等待安装完成 点击完成 2、保存json文件 复制返回结果 先把返回结果复制出来。保存到text里面 把文件另存为json格式 3、…

ConsiStory:无需训练的一致性文本到图像生成技术

随着大规模文本到图像(T2I)扩散模型的发展,用户可以更自由地通过文本指导图像生成过程。然而,要在不同的提示中保持同一主题的视觉一致性仍然是一个挑战。现有的方法通常需要对模型进行微调或预训练,以教授新词汇来描述…

Qt 进程间通信(一)——QSharedMemory共享内存

QSharedMemory共享内存 序言环境理论—逻辑理解实战—代码读取示例写入示例 序言 讲讲Qt的共享内存吧,巩固下 环境 msvc2022 Qt5.15 参考文档:https://doc.qt.io/qt-5/qsharedmemory.html 理论—逻辑理解 看下面前,你需要将共享内存看成…