引言
spring-boot-starter-parent 是一个特殊的项目,为基于 spring boot 的应用程序提供默认配置和默认依赖。
在本 spring boot 教程中,我们将深入了解所有 spring boot 项目内部使用的 spring-boot-starter-parent 依赖项。我们将探讨此依赖项所提供的所有配置选项,以及如何根据需要覆盖这些默认配置。
快速引入
如果你的工程是基于maven构建的,可以在pom.xml中按以下方式引入:
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>3.1.2</version> <relativepath/> <!-- lookup parent from repository --> </parent>
类似的,如果是基于gradle构建,可以参考按以下方式在build.gradle中引入:
plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } dependencies { implementation 'org.springframework.boot:spring-boot-starter' testimplementation 'org.springframework.boot:spring-boot-starter-test' }
什么是spring boot starter parent项目
spring boot 旨在简化构建 spring 应用程序的过程,同时尽量减少配置工作量。为此,诞生了 spring-boot-starter-parent父项目,为基于 spring boot 的应用程序提供默认配置和依赖项管理。
使用 spring-boot-starter-parent 作为父项目,可以确保应用程序遵循 spring boot 推荐的最佳实践,并且能够轻松地利用 spring boot 提供的各种特性。
<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> <groupid>com.howtodoinjava</groupid> <artifactid>spring-webmvc</artifactid> <packaging>jar</packaging> <version>0.0.1-snapshot</version> <name>spring-webmvc maven webapp</name> <url>https://howtodoinjava.com</url> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>3.1.2</version> <relativepath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> ... ... </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project>
当我们创建一个 spring boot 项目时,我们使用 spring-boot-starter-parent 作为我们项目的 pom.xml 或 build.gradle 的父级。
添加它之后,我们的项目会从这个父项目中继承默认的构建、依赖项和配置,因此我们不必手动指定它们。
通过使用 spring-boot-starter-parent,我们可以快速启动 spring boot 应用程序开发并减少设置常见配置和依赖项所需的工作量。
spring boot dependencies 项目介绍
“spring boot starter parent”项目进一步扩展了 spring-boot-dependencies 项目,spring-boot-dependencies 项目的作用包括:
- 统一依赖版本管理:为 spring boot 应用程序中常用的依赖项提供统一的版本管理,确保所有依赖项的版本都是兼容且经过测试的。
- 减少版本冲突:通过集中管理所有依赖项的版本,避免了因版本不一致导致的问题。
- 简化依赖声明:在项目中引用依赖项时,无需指定版本号,因为这些信息已经由 spring-boot-dependencies 统一管理。
<properties> <activemq.version>5.18.2</activemq.version> <angus-mail.version>1.1.0</angus-mail.version> <artemis.version>2.28.0</artemis.version> <aspectj.version>1.9.19</aspectj.version> <assertj.version>3.24.2</assertj.version> <awaitility.version>4.2.0</awaitility.version> ... ... </properties>
我们可以参考 spring-boot-dependencies项目的最新版本,并检查其 pom.xml 以获取所有依赖项使用的最新版本。
项目依赖管理
引入默认版本的依赖
一旦我们在项目中声明了 spring-boot-starter-parent,我们就可以引入其中的任何依赖项,只需在 dependencies 标签中声明它们即可。
这些依赖项已经在 spring-boot-starter-parent 中指定了默认版本,因此无需在项目中再次指定版本号。
<dependencies> <!-- 引入 spring web starter --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <!-- 其他依赖项 --> </dependencies>
由于 spring-boot-starter-parent 已经管理了所有依赖项的版本,因此上述代码片段中不需要指定版本号。这样可以简化依赖管理,并确保所有依赖项版本的一致性。
这种方式不仅简化了依赖项的管理,还确保了项目使用的是经过测试和验证的依赖项组合。
引入不同版本的依赖
要包含具有不同版本的依赖项,我们可以在 dependencymanagement 部分中指定依赖项及其版本。
这样做可以覆盖 spring-boot-starter-parent 中默认提供的版本,同时仍然享受统一版本管理带来的便利。
<dependencymanagement> <dependencies> <!-- 覆盖特定依赖项的版本 --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <version>2.7.4</version> <!-- 特定版本 --> </dependency> </dependencies> </dependencymanagement>
在这个例子中,spring-boot-starter-web 的版本在 dependencymanagement 部分中被指定为 2.7.4。
这样,在实际使用的依赖项中引用 spring-boot-starter-web 时,就可以使用这个指定的版本,而不是 spring-boot-starter-parent 中默认的版本。
通过这种方式,你可以灵活地覆盖或指定特定依赖项的版本,同时仍然保持项目依赖项的整体一致性。
或者,我们可以在属性部分覆盖所包含库的版本号。
<properties> <junit.version>4.13.2</junit.version> <junit-jupiter.version>5.9.3</junit-jupiter.version> </properties>
总结
本 spring boot 教程讨论了特殊项目 spring-boot-starter-parent 和 spring-boot-dependencies,它们之间的继承关系,以及它们在我们创建的任何 spring boot 项目中所带来的好处。
我们还学习了如何包含默认依赖项以及如何覆盖这些依赖项的版本。
通过使用 spring-boot-starter-parent 和 spring-boot-dependencies,我们可以:
- 简化依赖管理:避免在项目中显式指定每个依赖项的版本号,从而减少版本冲突的风险。
- 统一版本控制:确保所有依赖项的版本都是统一管理的,这有助于维护项目的稳定性和兼容性。
- 提高开发效率:通过预配置的默认设置和插件配置,可以更快地搭建项目基础结构。
- 灵活覆盖版本:在需要时,可以在 dependencymanagement 部分中覆盖特定依赖项的版本,以适应特定项目需求。
总之,这些工具和最佳实践帮助开发者更容易地构建健壮且易于维护的 spring boot 应用程序。希望本教程对您的学习之旅有所帮助!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论