目录
1、前言
今天这篇博客主要是了解一下starter是什么东西?
2、正文
我们打开一个SpringBoot项目,进入到它的pom.xml文件。
这里有两个
spring-boot-starter-web
和
spring-boot-starter-test
,我们来看一下。
我们就点击
spring-boot-starter-web
进入看一下。
我们从最后一个开始看,我们直接看到
spring-webmvc
。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.14</version>
<scope>compile</scope>
</dependency>
这就是SpringMVC能工作起来的原因。
哦,我导了
spring-boot-starter-web
,而
spring-boot-starter-web
导了
spring-webmvc
,所以我不用导
spring-webmvc
,这不就套娃嘛。
这就是一个典型的依赖传递。因为
A
依赖了
B
,而B又依赖了
C
,所以
A
就不用直接写了,直接就可以用
C
里面的内容。
我们到这就知道了,一个starter可以代表加入了很多东西,干嘛用的呢?如果你使用A技术的东西,那你就只用导入A技术的stater就行了,其他的东西也不需要你管了,SpringBoot帮你管了
为什么SpringBoot这么好用,就是因为有很多个这样的Stater供我们使用,才让我们的开发效率变高的。
那这个Stater什么时候加进来的呢?
就是我们创建SpringBoot项目的时候选择技术集的时候加入进来的,而spring-boot-starter-test是默认加入进来的。
那到底是不是它帮我们做的这些事情呢?我们来验证一下。
然后刷新一下Maven,我们运行一下SpringBoot01Application。
好家伙,导入的依赖全部都不存在了,controller都运行不起来了。
当然了,Stater的作用远不止导入依赖这么简单。
3、小结
1、
starter
1.1 SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到
减少依赖配置
的目的。
2、
parent
2.1 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到
减少依赖冲突
的目的。
2.2 spring-boot-starter-parent各版本间存在着诸多坐标版本不同。
3、实际开发
3.1 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V
3.2 如发生坐标错误,再指定Version(要小心版本冲突)
当然了,SpringBoot并不是所有依赖都有(例如druid),如果遇到有哪些依赖没有的,就要用到最原始的方式导入依赖了。
4、总结
4.1 开发SpringBoot程序需要导入坐标时通常导入对应的starter
4.2 每个不同的starter根据功能不同,通常包含多个依赖坐标
4.3 使用starter可以实现快速配置的效果,达到简化配置的目的