前言
一开始使用springboot时,经常会在springboot的pom文件中看见spring-boot-starter-parent、spring-boot-dependencies、spring-boot-starter-web、spring-boot-starter等依赖,他们之间的关系是什么样的,通过这篇文章梳理一下。
常见依赖的pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
结论:先说结论,在创建spring boot工程时,spring-boot-starter-parent 和 spring-boot-dependencies是二选一的关系,在pom中引入其中一个就可以了。
spring-boot-starter-parent
使用spring-boot-starter-parent通过maven继承使用,方式如图,spring-boot-starter-parent会对常见的springboot使用到的包进行统一管理。在本工程中使用的时候,只需要按需根据groupId和artifactId引入,无需填写具体的版本号。
如下图,点开spring-boot-starter-parent的实现,其实能发现spring-boot-starter-parent 也是通过继承 spring-boot-dependencies而来。
spring-boot-dependencies
spring-boot-starter-parent是通过继承的方式引入springboot相关的依赖,spring-boot-dependencies也是对常用的springboot包进行统一管理,但是是通过将spring-boot-dependencies中统一管理的包直接引入到当前项目(scope使用import实现)。
starter和starter-web
spring-boot-starter
和 spring-boot-starter-web
都是spring-boot-dependencies依赖管理下的具体的包。
-
spring-boot-starter
:是Spring Boot框架的核心模块之一,它定义了一组通用的依赖项集合,用于简化Spring Boot应用程序的构建和配置。这些Starter模块提供了对各种功能的自动配置和集成,使得我们可以轻松地使用这些功能而无需手动进行繁琐的配置。 -
spring-boot-starter-web
:是基于spring-boot-starter
的一个扩展模块,它专门用于构建Web应用程序。它引入了Spring MVC、Tomcat服务器、Jackson JSON处理库等必要的依赖项,并通过自动配置来提供默认的Web应用程序上下文。它简化了构建Web应用程序的过程,使得我们可以更快速地搭建一个基于Spring MVC的Web项目。
结论:spring-boot-starter-web
是在spring-boot-starter
的基础上针对Web应用程序提供的一个特定功能的Starter。如下图点开spring-boot-starter-web 的实现可以发现,spring-boot-starter-web已经引入了spring-boot-starter,所以在使用spring-boot-starter-web的时候不用单独再引用spring-boot-starter。
参考文章
- https://blog.csdn.net/weixin_41979002/article/details/120678635