Spring Boot教程之二十九: 依赖管理

Spring Boot --依赖管理

Spring-Boot 框架是最流行的 Web 开发框架。毫无疑问,它提供了丰富的基本功能以及处理这些功能的便捷方式。Spring-Boot 的核心是"依赖管理"功能。

注意: 依赖管理只是一种在一个地方管理所有必需的依赖关系并有效利用它们的方法。

依赖管理的重要性

  • 它允许在一个地方根据相应的 Spring-Boot 版本指定所有必需的依赖项。
  • 您可以指定或更改 Spring-Boot 版本。更改 Spring-Boot 版本时,所有提及(添加)的依赖项的版本都将自动更新。
  • 您可以防止不同 Spring-Boot 库版本的冲突,这对于"多模块"项目有益。

Spring-Boot 中的依赖管理工作原理

  • 依赖项只不过是一个提供我们可以在应用程序中使用的特定功能的"库"。
  • 在 Spring-Boot 中,依赖管理和自动配置同时工作。
  • 自动配置使得我们管理依赖关系变得非常容易。
  • 我们必须在 pom.xml/build.gradle 文件中添加依赖项。
  • 然后这些添加的依赖项将从 Maven Central 下载。
  • 下载的依赖项将存储到本地文件系统的".m2"文件夹中。
  • Spring-Boot 应用程序可以从".m2"及其子目录访问这些依赖项。
  • 例如 - (.m2 -> repository -> org , etc)

依赖管理的生命周期

Maven Central 示例 -- 'Starter Web' 依赖项

项目构建系统

  1. 您应该使用两个最常用的版本 Maven 和 Gradle。
  2. Maven 和 Gradle 使用不同的语法来管理依赖项。
  3. 另外,您不需要提及依赖项的版本,因为 Spring-Boot 会自动配置它们。不过您也可以提及版本或覆盖。
  4. 发布的精选列表包含可与 Spring-Boot 一起使用的所有 Spring 模块和第三方库。
  5. Maven 在"pom.xml"文件中管理它们,而 Gradle 在"build.gradle"文件中管理它们。

Maven 构建的特点

  1. 它使用默认的 Java 编译器。
  2. 它具有 UTF-8 源编码
  3. 不提及依赖项版本信息的一个有用特性是从 POM(spring-boot-dependencies)继承的。
  4. 资源过滤和插件配置。
  5. 资源过滤也适用于"application.properties"和"application.yml"。

Spring-Boot 启动器

在依赖管理方面,Spring-Boot Starters 在其中扮演着重要的角色。它们是一组方便的依赖描述符,应该在您的应用程序中提及。您可以访问项目所需的所有 Spring 和相关技术堆栈。启动器具有类似的命名模式 - ( spring-boot-starter-* )。第三方启动器不以"spring-boot"开头。启动器模式中的星号代替要使用的任何技术名称。

例如: "spring-boot-starter-jdbc"

启动器类型:

  1. Application Starters.
  2. Technical Starters.
  3. Production-ready Starters.

Spring-Boot 所需的所有依赖项都嵌入在"dependencies"标签/块中。

Maven->pom.xml 文件

复制代码
Maven -> pom.xml

<dependencies>
     <dependency>
          <groupId> ... </groupId>
          <artifactId> ... </artifactId>
          <version> ... </version>
     </dependency>
</dependencies>

Maven

添加依赖项

在 STS(Spring Tool Suite)中创建新的 Spring-Boot 项目时,您可以在设置项目时添加所需的依赖项。

  1. File
  2. New -> Spring Starter Project
  3. Next
  4. Search for the required dependencies and add them
  5. Next
  6. Finish

依赖项选择窗口。

要添加当前工作项目的依赖项:

  1. Right-click on project
  2. Select Spring -> Add Starters
  3. Search for the required dependencies and add them
  4. Next
  5. Select pom.xml/HELP.md or both
  6. Finish

在上述图片步骤之后出现

如果您知道依赖项,则可以直接将它们放在 pom.xml 文件中。例如,要在项目构建中添加 Thymeleaf 模板引擎,可以在 ' <dependencies></dependencies> ' 标签中添加以下依赖项。

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

示例:pom.xml

  • XML

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <?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-starter-parent</artifactId> <version >2.6.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId >sia</groupId> <artifactId >GFG</artifactId> <version >0.0.1-SNAPSHOT</version> <name >GFG</name> <description >GFG</description> <properties> <java.version >11</java.version> </properties> <dependencies> <dependency> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-starter-thymeleaf</artifactId> </dependency> <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> <dependency> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-starter</artifactId> </dependency> <dependency> <groupId >org.projectlombok</groupId> <artifactId >lombok</artifactId> <optional >true</optional> </dependency> <dependency> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-devtools</artifactId> <scope >runtime</scope> <optional >true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId >org.springframework.boot</groupId> <artifactId >spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId >org.projectlombok</groupId> <artifactId >lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> |

理解/配置依赖关系

A -- Starter Parent

为了利用自动配置的"合理"默认值,您应该在构建的项目中添加 Starter Parent。

复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>___</version>
</parent>

使用如上所述的默认配置,您可以通过覆盖"属性"来覆盖相应的依赖项。

复制代码
<properties>
    <slf4j.version>___</slf4j.version>
</properties>

这将确保使用所提到的 SLF4j 库版本。

您还可以管理自动配置的" ++++Starter Parent++++ "并创建自定义 POM,而无需在" spring-boot-dependencies "的工件" scope = import "的帮助下指定第一个。

复制代码
 <dependencyManagement>
     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>___</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

此后,您可以正常添加上述依赖项。但是,要覆盖单个依赖项,您需要在"spring-boot-dependencies"条目之前添加相应的条目。

复制代码
<dependencyManagement>
    <dependencies>
        
        <!-- Override SLF4J provided by Spring Boot -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>___</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>___</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    
    </dependencies>
</dependencyManagement>

但是,您必须通过明确添加"spring-boot-maven-plugin"来手动配置插件管理。管理 Maven 插件非常重要,因为它将 Spring-Boot 应用程序打包成可执行 jar。

Maven->pom.xml 文件

复制代码
Maven -> pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

B -- Java 版本

您还可以通过以下方式更改 Java 版本 --

复制代码
<properties>
    <java.version>___</java.version>
</properties>

C --开发人员工具

一组特定的工具,使应用程序开发过程更加简单。它位于"spring-boot-devtools"模块中。

Maven->pom.xml 文件

复制代码
Maven -> pom.xml

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
     <optional>true</optional>
</dependency>

Gradle

对于像 Maven 中的"Starter Parent",这里没有"Super Parent"来利用某些自动配置。要在 Gradle 中添加依赖项,请将其添加到"dependencies{ }"部分中。要提供可执行 jar,您可以在依赖项部分添加以下内容 -

复制代码
'spring-boot-gradle-plugin'

示例 -- build.gradle

复制代码
buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.8.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

要添加"开发人员工具",请在"依赖项"块中添加以下内容

复制代码
Gradle -> build.gradle

developmentOnly("org.springframework.boot:spring-boot-devtools")

注意 :Spring Boot 的每个版本都与 Spring Framework 的基本版本相关联,因此强烈建议不要自行指定其版本。

相关推荐
QQ_538876912 分钟前
Z240004基于Java+ssm+maven+mysql的房屋租赁系统的设计与实现
java·mysql·spring·maven
shaoweijava8 分钟前
私人诊所管理系统(源码+数据库+报告)
java·开发语言·数据库·spring boot·mysql·mybatis
知识分享小能手9 分钟前
Java学习教程,从入门到精通,Java Stack(堆栈)语法知识点及语法知识点(58)
java·大数据·开发语言·学习·intellij-idea·java后端·java开发
瑞金彭于晏20 分钟前
yml和xml分别代表什么
xml·java·mybatis
YAy1734 分钟前
FastJson反序列化学习-01
java·开发语言·安全·web安全·网络安全
梦夏夜36 分钟前
go 跨平台打包
开发语言·后端·golang
菜菜-plus43 分钟前
SpringBoot,SpringCloudAlibaba,GateWay,Nacos,OpenFeign,Vue
vue.js·spring boot·gateway
zfj32143 分钟前
SpringCloud微服务实战系列:03spring-cloud-gateway业务网关&灰度发布
spring boot·gateway·springcloud·webflux·灰度发布·业务网关
MatthewMao1 小时前
设计模式11:单例模式(全局唯一)
java·单例模式·设计模式
123yhy传奇1 小时前
【学习总结|DAY018】Java异常、泛型、集合框架
java·开发语言