SpringBoot启动原理中,哪些细节构成了其高效启动的关键步骤?

2026-04-13 05:441阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1364个文字,预计阅读时间需要6分钟。

SpringBoot启动原理中,哪些细节构成了其高效启动的关键步骤?

背景+1+大家都知道SpringBoot是通过main函数启动的,这里跟踪代码到启动处都没有找到while(true),为什么启动后可以一直运行?

+2+SpringBoot默认使用tomcat作为web容器。大家也可以通过在pom文件中配置来指定其他容器。

背景

1> 大家都知道SpringBoot是通过main函数启动的,这里面跟踪代码到处都没有找到while(true),为什么启动后可以一直跑?

2> SpringBoot默认使用tomcat作为web容器。大家也可以通过在pom文件中exclusion掉tomcat,denpendency jetty 的方法来使用jetty。那SpringBoot是怎么做到在不同web容器之间切换的呢?

3> 传统的web容器比如jetty本质上是直接通过java start.jar 来启动,之后来加载spring上下文的,SpringBoot通过main函数是怎么来启动web容器的呢?

本文就这三个问题展开论述。

问题1分析

问题1很简单,启动后一直跑是因为启动了线程池。原理就是有非deamon的线程在跑。Java虚拟机规范定义要等所有用户线程都运行完才会退出。

所以这个原理就和下面启动线程池一样

程序员修炼之道教我们:不要假定,要证明。

阅读全文

本文共计1364个文字,预计阅读时间需要6分钟。

SpringBoot启动原理中,哪些细节构成了其高效启动的关键步骤?

背景+1+大家都知道SpringBoot是通过main函数启动的,这里跟踪代码到启动处都没有找到while(true),为什么启动后可以一直运行?

+2+SpringBoot默认使用tomcat作为web容器。大家也可以通过在pom文件中配置来指定其他容器。

背景

1> 大家都知道SpringBoot是通过main函数启动的,这里面跟踪代码到处都没有找到while(true),为什么启动后可以一直跑?

2> SpringBoot默认使用tomcat作为web容器。大家也可以通过在pom文件中exclusion掉tomcat,denpendency jetty 的方法来使用jetty。那SpringBoot是怎么做到在不同web容器之间切换的呢?

3> 传统的web容器比如jetty本质上是直接通过java start.jar 来启动,之后来加载spring上下文的,SpringBoot通过main函数是怎么来启动web容器的呢?

本文就这三个问题展开论述。

问题1分析

问题1很简单,启动后一直跑是因为启动了线程池。原理就是有非deamon的线程在跑。Java虚拟机规范定义要等所有用户线程都运行完才会退出。

所以这个原理就和下面启动线程池一样

程序员修炼之道教我们:不要假定,要证明。

阅读全文