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 以及自定义依赖来满足项目需求。

相关推荐
侠客行03174 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪4 小时前
深入浅出LangChain4J
java·langchain·llm
灰子学技术6 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
老毛肚6 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎7 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰7 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码7 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚7 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂7 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas1367 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript