首页 > 编程语言 >【SpringApplication】源码之【StackWalker】

【SpringApplication】源码之【StackWalker】

时间:2023-01-22 12:34:42浏览次数:34  
标签:SpringApplication 我们 源码 main 方法 StackWalker

 问题SpringBoot是如何找到main方法的启动类的? 

 我们在SpringApplication 275行看到有一个“探测Main”的方法,其中他使用了Java 9 的新特性: StackWalker。

图1

StackWalker能够允许通过程序去访问方法调用栈,比我们经常看到的StackTrace要更加强大,在方法3处,即通过寻找调用链路中方法名为"main"的定义类来获取"MainApplicationClass".

不过作为"抬杠小能手"的我们,会发现这样寻找并不严谨,比如我们自己定义如下的启动方式:

 图2

我们心理扭曲的使用了另外一个main方法来启动SpringApplication,然后通过StackWalker首先探测到的是我们自定义的MyMainCall类而不是SpringBootApplication,因为Stack是从栈顶向下遍历。

 图3

当然这样做纯粹是没事找抽型的,而且这个mainApplicationClass本身并不是什么关键性的变量,也不会引起不适。

标签:SpringApplication,我们,源码,main,方法,StackWalker
From: https://www.cnblogs.com/quantanghe/p/17064347.html

相关文章

  • SOFAJRaft源码阅读-模块启动过程
    本篇文章旨在分析SOFAJRaft中jraft-example模块的启动过程,由于SOFAJRaft在持续开源的过程中,所以无法保证示例代码永远是最新的,要是有较大的变动或者纰漏、错误的地方,欢迎......
  • 一文解决如何使用 C 语言判断质数(素数)[ 附解析与源码 ]
    前言质数历来都是数学界的宠儿,是数学里神秘的谜团。质数又和C语言有着不解之缘,本篇文章将讲解如何用C语言判断质数。为了方便大家在读完此文章后使用文中程序,我会将......
  • go RWMutex源码分析
    适用场景并发场景下读多写少。字段含义RWMutex基于Mutex,写优先,Lock函数(反转readerCount)会阻止新的reader获取锁。typeRWMutexstruct{  wMutex  // writer......
  • go sync.Once源码分析
    适用场景服务启动时读取全局配置。单个函数流程里面只调用一次。源码双重检查done值是0后,加锁执行指定函数并把done值改成1。typeOncestruct{ doneuint32 mM......
  • Java/JS/Python/Go语言设计模式大全【精品源码】
    DesignPattern23种经典设计模式源码详解经典设计模式源码详解,用不同语言来实现,包括Java/JS/Python/TypeScript/Go等。结合实际场景,充分注释说明,每一行代码都经过检验,确......
  • DBNet源码详解
    参考项目:https://github.com/WenmuZhou/DBNet.pytorch标签制作制作thresholdmap标签make_border_map.py程序入口if__name__=='__main__'if__name__=='__main......
  • 【Django drf】 序列化类常用字段类和字段参数 定制序列化字段的两种方式 关系表外键
    目录序列化类常用字段类和字段参数常用字段类常用字段参数选项参数通用参数序列化类高级用法之sourcesource填写类中字段source填写模型类中方法source支持跨表查询定制序......
  • ecs-lite 源码简单分析
    初学typescript,分析的不到位欢迎指正。 ecs-lite基于ts实现的纯ecs库,可用于学习交流及H5游戏开发!https://gitee.com/aodazhang/ecs-lite?_from=gitee_search文......
  • DBNet源码详解
    参考项目:https://github.com/WenmuZhou/DBNet.pytorch标签制作制作thresholdmap标签make_border_map.py程序入口if__name__=='__main__'if__name__=='__main......
  • win10下python3.9的代理报错问题解决(附web3的polygon爬虫源码)
    背景因为工作中经常需要代理访问,而开了代理,request就会报错SSLError,如下:requests.exceptions.SSLError:HTTPSConnectionPool(host='test-admin.xxx.cn',port=443):Ma......