问题: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