Spring Boot Starter Parent介绍

引言

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 应用程序。希望本教程对您的学习之旅有所帮助!

祝您学习愉快!!

相关推荐
今天不coding19 分钟前
自定义持久层框架------从零到一手写一个mybatis
java·mybatis
码农阿岩~23 分钟前
适合初学者的[JAVA]: 服务框架常见问题
java·开发语言
小羊在奋斗1 小时前
【C++】二叉搜索树+变身 = AVL树
java·开发语言·c++·机器学习
iQM752 小时前
Spring Boot集成RBloomFilter快速入门Demo
java·spring boot·spring
爱上语文2 小时前
Springboot 阿里云对象存储OSS 工具类
java·开发语言·spring boot·后端·阿里云
小黑032 小时前
Scala第三天
开发语言·后端·scala
《源码好优多》3 小时前
基于微信小程序的生鲜订购小程序系统(SpringBoot+Vue+Uniapp+MySQL)
spring boot·微信小程序·小程序
代码代码快快显灵5 小时前
java之异常处理
java·开发语言
茶馆大橘5 小时前
Spring Validation —— 参数校验框架
java·后端·学习·spring