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

相关推荐
带刺的坐椅16 小时前
Solon I18n:三种解析器,零样板代码
java·国际化·i18n·solon·多语言
掉鱼的猫16 小时前
Solon I18n:三种解析器,零样板代码
java
程序员阿明16 小时前
spring boot3访问resources下的文件,使得在浏览器url中可以直接访问
java·spring boot·后端
wuminyu16 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++
霸道流氓气质17 小时前
SpringBoot中使用OAuth2 认证与 JWT Token — 概念、原理与实践
java·spring boot·后端
dogstarhuang17 小时前
Kimi K3 本地部署实战:从 1.56TB 权重到推理服务的完整成本分析
java·人工智能·后端·ai·开源·接口·程序员创富
就不掉头发17 小时前
C++函数模板
java·开发语言·c++
snow@li17 小时前
Vue Axios封装与SpringBoot Payload封装全景关联分析(前后端数据交互底层闭环)
前端·vue.js·spring boot
用户2986985301417 小时前
Word 转 PDF 的 3 种自动化实现:从桌面操作到后端服务集成
java·人工智能·后端
我是苏苏17 小时前
WPF开发01:基础控件及常用模板篇
开发语言·c#·html·wpf