<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test-autoconfigure</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator-autoconfigure</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${revision}</version>
</dependency>
</dependencyManagement>
spring
-
boot
-
starter
-
parent
通过继承
spring
-
boot
-
dependencies
从而实现了
SpringBoot
的版本依
赖管理
,
所以我们的
SpringBoot
工程继承
spring-boot-starter-parent
后已经具备版本锁定等配置了
,
这也就是在
Spring Boot
项目中
部分依赖
不需要写版本号的原因
(二)spring-boot-starter-web 依赖源码剖析
查看spring-boot-starter-web依赖文件源码,核心代码具体如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starters</artifactId>
<version>${revision}</version>
</parent>
<artifactId>spring-boot-starter-web</artifactId>
<name>Spring Boot Web Starter</name>
<description>Starter for building web, including RESTful, applications using Spring
MVC. Uses Tomcat as the default embedded container</description>
<properties>
<main.basedir>${basedir}/../../..</main.basedir>
</properties>
<scm>
<url>${git.url}</url>
<connection>${git.connection}</connection>
<developerConnection>${git.developerConnection}</developerConnection>
</scm>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
</project>
从上述代码可以发现,
spring-boot-starter-web
依赖启动器的主要作用是打包了
Web
开发场景所需的底层所有依赖(基于依赖传递,当前项目也存在对应的依赖
jar
包)
正是如此,在
pom.xml
中引入
spring-boot-starter-web
依赖启动器时,就可以实现
Web
场景开发,而不需要额外导入
Tomcat
服务器以及其他
Web
依赖文件等。
当然,这些引入的依赖文件的版本号还是由
spring-boot-starter-parent
父依赖进行的统一管理。
Spring Boot
除了提供有上述介绍的
Web
依赖启动器外,还提供了其他许多开发场景的相关依赖,
我们可以打开
Spring Boot
官方文档,搜索
“Starters”
关键字查询场景依赖启动器
列出了
Spring Boot
官方提供的部分场景依赖启动器,这些依赖启动器适用于不同的场景开发,使用时只需要在
pom.xml
文件中导入对应的依赖启动器即可。
需要说明的是,
Spring Boot
官方并不是针对所有场景开发的技术框架都提供了场景启动器,例如阿里巴巴的
Druid
数据源等,
Spring Boot
官方就没有提供对应的依赖启动器。为了充分利用
Spring Boot
框
架的优势,在
Spring Boot
官方没有整合这些技术框架的情况下,
Druid
等技术框架所在的开发团队主动
与
Spring Boot
框架进行了整合,实现了各自的依赖启动器,例如
druid-spring-boot-starter
等。我们在
pom.xml
文件中引入这些第三方的依赖启动器时,切记要配置对应的版本号。