Java高级---Spring Boot---5依赖管理

5 依赖管理

说明

我多是使用的Maven

5.1 Spring Boot的Starters详解

Spring Boot Starters 是一种便捷的依赖管理方式,它们是 Spring Boot 提供的"启动器",每个启动器都包含了一系列已经配置好的依赖。

  • Starters的作用 : 它们预先定义了一组依赖,这些依赖通常是协同工作的,Spring Boot 会自动管理这些依赖的版本,确保它们之间的兼容性。
  • 使用Starters : 在 Maven 的 pom.xml 文件中,你只需要添加对应的 <dependency> 标签;在 Gradle 的 build.gradle 文件中,只需在 dependencies 块中添加对应的依赖项。
  • 常见的Starters :
    • spring-boot-starter: 包含 Spring Boot 的核心功能,如自动配置、日志框架(SLF4J 和 Logback)以及 YAML 配置支持。
    • spring-boot-starter-web: 用于构建 Web 应用程序,包括 Tomcat 作为内嵌服务器和 Spring MVC。
    • spring-boot-starter-data-jpa: 包含数据访问所需的依赖,如 Hibernate、Spring Data JPA 和数据库连接池。
    • spring-boot-starter-security: 集成 Spring Security,提供完整的安全支持。
    • spring-boot-starter-test: 包含用于测试 Spring Boot 应用程序的库,如 JUnit、Spring Boot TestContext Framework 等。

案例 : 添加 Web 支持

要在 Maven 项目中添加 Web 支持,可以在 pom.xml 文件中添加以下依赖:

xml 复制代码
<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

在 Gradle 中,添加依赖的方式如下:

groovy 复制代码
// build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

5.2 自定义依赖管理详解

自定义依赖管理 允许开发者引入特定的库版本或管理非 Starters 包含的依赖。

  • Maven :
    • 使用 <dependency> 标签添加自定义依赖。
    • 使用 <version> 标签指定依赖的具体版本。
    • 使用 <dependencyManagement> 标签在多模块项目中集中管理依赖版本。
  • Gradle :
    • dependencies 块中添加自定义依赖。
    • 使用 extversions 来定义版本常量,以便在项目中重用。
    • 使用 dependencyManagement 块结合 springBoot() 插件来集中管理依赖版本。

案例 : 自定义依赖管理

假设你需要使用一个特定版本的数据库驱动,你可以在 Maven 的 pom.xml 文件中这样配置:

xml 复制代码
<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
</dependencies>

在 Gradle 中,可以这样配置:

groovy 复制代码
// build.gradle
dependencies {
    implementation 'mysql:mysql-connector-java:8.0.23'
}

排除依赖 :

有时自动配置的依赖与项目中的其他依赖冲突,这时可以排除特定的依赖。在 Maven 中使用 <exclusions> 标签,在 Gradle 中使用 exclude 方法。

案例 : 排除依赖

在 Maven 中排除一个依赖:

xml 复制代码
<!-- pom.xml -->
<dependency>
    <groupId>some-group</groupId>
    <artifactId>some-artifact</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>conflicting-group</groupId>
            <artifactId>conflicting-artifact</artifactId>
        </exclusion>
    </exclusions>
</dependency>

在 Gradle 中排除一个依赖:

groovy 复制代码
// build.gradle
dependencies {
    implementation ('some-group:some-artifact:1.0.0') {
        exclude group: 'conflicting-group', module: 'conflicting-artifact'
    }
}

版本范围 :

在某些情况下,可能希望依赖库能够自动更新到某个范围内的版本,而不是固定在一个特定版本。在 Maven 和 Gradle 中都可以使用版本范围。

案例 : 指定版本范围

在 Maven 中:

xml 复制代码
<!-- pom.xml -->
<dependency>
    <groupId>some-group</groupId>
    <artifactId>some-artifact</artifactId>
    <version>[1.0.0,2.0.0)</version>
</dependency>

在 Gradle 中:

groovy 复制代码
// build.gradle
dependencies {
    implementation 'some-group:some-artifact:1.0.0+'
}

本地仓库 :

配置本地仓库可以提高构建速度,特别是在没有网络连接或需要离线工作时。在 Maven 的 settings.xml 文件中配置本地仓库路径,在 Gradle 中可以在 gradle.properties 文件中配置。

通过这些详细的步骤和案例,您可以更好地理解 Spring Boot 的依赖管理和如何使用 Starters 以及自定义依赖来满足项目需求。

相关推荐
青衫码上行20 小时前
【从0开始学习Java | 第22篇】反射
java·开发语言·学习
superlls20 小时前
(Spring)Spring Boot 中 @Valid 与全局异常处理器的联系详解
java·spring boot·后端
一念&20 小时前
每日一个C语言知识:C 字符串
c语言·开发语言
0110_102420 小时前
tauri + rust的环境搭建---初始化以及构建
开发语言·后端·rust
会开花的二叉树20 小时前
C++微服务 UserServer 设计与实现
开发语言·c++·微服务
像风一样自由202020 小时前
Rust Tokio vs Go net/http:云原生与嵌入式生态选型指南
开发语言·golang·rust
DuHz20 小时前
C程序中的数组与指针共生关系
linux·c语言·开发语言·嵌入式硬件·算法
我星期八休息20 小时前
C++智能指针全面解析:原理、使用场景与最佳实践
java·大数据·开发语言·jvm·c++·人工智能·python
摇滚侠20 小时前
Spring Boot 3零基础教程,WEB 开发 整合 Thymeleaf 笔记36
java·spring boot·笔记
大猫会长21 小时前
docker安装php+apache
java·开发语言