当我们最初接触SpringBoot的时候,映入眼帘的就是各种各样的Starter。当我们利用Spring Initializer创建SpringBoot项目的时候,默认给我们增加了两个Starter的依赖,分别是:spring-boot-starter和spring-boot-starter-test;
那当我们想要进行web开发的时候,还要加入spring-boot-starter-web;
而且,我们回想一下,当学习SpringBoot的时候,第一个例子,通过IDEA创建一个SpringBoot项目之后,我们什么也没有做,直接运行SpringbootDemoApplication(xxxApplication)这个类的main方法,项目就启动起来了。也没有像以往基于web项目一样,去配置tomcat。那项目怎么就神奇的启动起来了呢?原因就在这个Starter里面。
我们来看一下官方文档对Starter的介绍。
通过官方文档里面的介绍,我们了解到,Starter其实就是Spring针对不用的开发场景,给我们提供的“套餐”。这就类似于,我们去KFC吃饭,可能有些同学们是会选择自己喜欢吃的食物去下单,但是,有些同学们对饮食并没有那么挑剔,只是满足我爱吃且能吃饱即可。所以,就像我一样,直接就去点物美价廉的香辣鸡腿堡套餐了。而这个香辣鸡腿堡套餐,就是我们今天要介绍的Starter了。
那么既然Spring官方给我们提供了套餐的选择方式,那么有多少种官方套餐可以供我们选择呢?那么有大概50多种Starter套餐我们可以选择,其中,根据偏应用、产品和技术,分为三大类:
下面具体的Starter,大家可以参加官方文档中的介绍:
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
根据里面的列表,去选择自己所需要的Starter。
那么我们理解了Starter之后,我们以一个web开发场景为例,看看spring-boot-starter-web给我们引入了什么?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们首先引入web的Starter。引入完毕之后,我们发现,陆陆续续的下载了很多jar包,我们通过查看maven依赖,来看看项目现在有哪些jar包被引入了进来:
通过上面的依赖图,我们发现,web的Starter给我们提供了webmvc、web、tomcat和json的能力,那么,也就能够解释为什么我们自己没有去配置tomcat,项目却可以自己跑起来的原因了。