SpringBoot启动原理中,哪些细节构成了其高效启动的关键步骤?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1364个文字,预计阅读时间需要6分钟。
背景+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分钟。
背景+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虚拟机规范定义要等所有用户线程都运行完才会退出。
所以这个原理就和下面启动线程池一样
程序员修炼之道教我们:不要假定,要证明。

