前言

因为以前用 SSM、SSH 比较多,在我第一次接触 Spring Boot 框架的时候就冒出了一个疑问:我也没配置 Tomcat,为什么 Spring Boot 就能跑起来呢?难道它没用到 Tomcat 吗?不知道其他小伙伴有没有产生过跟我一样的疑问,那么今天咱们就来个刨根问底,看看 Spring Boot 为什么不需要额外配置 Tomcat 💪。

刨根问底ing…

在我们新建 Spring Boot 项目的时候,pom.xml 文件会自动添加依赖,其中有一个出场率高达 100% 依赖的👇

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

各位小伙伴肯定都见过这个依赖,接下来咱们用可爱的小手按住 Ctrl 键,点击一下这个依赖,一起看看它的 pom 文件👇

spring-boot-starter-web 帮助我们引入了很多核心的东西,它主要用于集成其它 web 框架的基础结构以及相关技术,我们可以看到 spring-boot-starter-web 又引入了 spring-boot-starter-tomcat 依赖,我们再用同样的方式看看它的 pom 文件👇

我们可以看到 Tomcat 的核心组件 jakarta.annotation-api、tomcat-embed-core、org.apache.tomcat.embed 全部都通过 Maven 引进来了。到这里我们应该就明白了,并不是 Spring Boot 没有用到 Tomcat,而是 Spring Boot 已经帮我们配置好了,这也正是 Spring Boot 大受欢迎的原因,它帮助开发人员省去了配置的时间,可以让我们更专注于业务逻辑的实现、性能的优化等等方面,至于那些配置交给 Spring Boot 这个大管家就可以放心啦~

还有一个依赖大家肯定也不陌生👇

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.6.1</version>
</parent>

这里简单说两句,如果在 pom.xml 文件种增加了上面的依赖,就表明当前的项目依赖于 spring-boot-starter-parent 这个父项目,而这个父项目又依赖了 spring-boot-dependencies。spring-boot-dependencies 可以说是 Spring Boot 项目依赖的版本控制中心,控制中心已经帮我们配置好了项目所需的所有基础环境的版本,而且这些版本会随着 Spring Boot 版本的升级而不断优化,这也就意味着我们不需要再关心这些繁琐的依赖的版本了,它会帮我们配置出最稳地的依赖版本,这也就体现出了约定优于配置的思想。当然了,如果有特殊需要,自己进行配置也没问题,如果没有特殊需要的话,就直接使用它提供的依赖就可以啦。

说到这肯定有小伙伴会产生疑问:运行一个 Spring Boot 项目的时候,使用内置的 Tomcat 和我们自己配置额外的 Tomcat 有什么区别呢?

其实二者之间没有什么太大的区别,最明显的区别就是使用额外配置的 Tomcat 时,修改参数会更加方便一点(毕竟使用内置的 Tomcat 时,改个配置还需要重新打包运行)。如果要问我哪种方式更好,我只能说这二者之间并没有谁一定优于谁的说法,如何选择完全取决于在实际开发过程中的需求,或者是取决开发人员的习惯,选择适合自己的才是最好的👍。

小结

本人经验有限,有些地方可能讲的没有特别到位,如果您在阅读的时候想到了什么问题,欢迎在评论区留言,我们后续再一一探讨🙇‍

希望各位小伙伴动动自己可爱的小手,来一波点赞+关注 (✿◡‿◡) 让更多小伙伴看到这篇文章~ 蟹蟹呦(●’◡’●)

如果文章中有错误,欢迎大家留言指正;若您有更好、更独到的理解,欢迎您在留言区留下您的宝贵想法。

你在被打击时,记起你的珍贵,抵抗恶意;
你在迷茫时,坚信你的珍贵,抛开蜚语;
爱你所爱 行你所行 听从你心 无问东西

更多推荐

大聪明教你学Java | Spring Boot 为什么不需要额外配置 Tomcat