目录
今天这篇博客主要是了解一下starter是什么东西?
我们打开一个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的作用远不止导入依赖这么简单。
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.1 开发SpringBoot程序需要导入坐标时通常导入对应的starter
4.2 每个不同的starter根据功能不同,通常包含多个依赖坐标
4.3 使用starter可以实现快速配置的效果,达到简化配置的目的