Spring Boot Starter Parent

在这,您将学习了解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父级 Pom 文件,旨在提供自动版本依赖管理,帮助我们轻松快速地进行 Spring Boot 开发。

什么是 Spring Boot Starter Parent ?

通过 Spring Boot Starter Parent, 我们可以进行简单便捷地包依赖管理。在 Spring Boot 每一个发行版中,均提供了该版本所兼容的依赖项版本清单

所以,在开发 Spring Boot 应用时,pom.xml 文件中,我们可以不用指定具体的依赖版本号,因为 Spring Boot Starter Parent 默认会使用自身支持包版本号。

Spring Boot Starter Parent 开始

通过 Spring Initializr 或者使用 Idea 创建一个 Spring Boot 项目时,我们可以看到 pom.xml 文件中包含以下内容:

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

一旦 pom.xml 文件中包含了上述配置,Spring Boot 应用将默认包含如下功能:

  • 1.依赖管理功能(Spring Boot 自动管理包版本依赖)

  • 2.相关默认值设置

    • 2.1 默认的 Java 版本号
    • 2.2 资源文件编码格式
    • 2.3 资源过滤等
  • 3.插件管理

1.1 了解 Starter Parent 内部

追踪到 spring-boot-starter-parent 内部文件,可以看到存在一个 spring-boot-dependencies的父级 pom

文件中定义了应用所有的依赖管理清单,还包括插件和其他相关配置,上面是 pom.xml 大致的样子:

pom 复制代码
<properties> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
    <resource.delimiter>@</resource.delimiter> 
    <maven.compiler.source>${java.version}</maven.compiler.source> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.target>${java.version}</maven.compiler.target> 
</properties>

属性部分定义了一些应用程序参数的默认值。如果我们没有自定义,则默认使用这些值。

pom 复制代码
<pluginManagement> 
    <plugins> 
        <plugin> 
        <groupId>org.jetbrains.kotlin</groupId> 
        <artifactId>kotlin-maven-plugin</artifactId>
        <version>${kotlin.version}</version> 
        <executions> 
        <execution>
            <id>compile</id> 
            <phase>compile</phase> 
                <goals> 
                    <goal>compile</goal> 
                </goals> 
        </execution> 
        <!-- other execution goals --> 
        <configuration> 
            <jvmTarget>${java.version}</jvmTarget> 
            <javaParameters>true</javaParameters> 
        </configuration> 
        </plugin> 
    <!-- 下面是其他相关插件--> 
    </plugins> 
<pluginManagement>

1.2 Starter Parent 是如何定义版本号的?

我们继续深入 pom.xml 文件配置:

windows 平台按住 ctrl, 点击 2.1.2.RELEASE, 可以看到如下配置内容:

pom 复制代码
<properties> 
    <activemq.version>5.15.7</activemq.version> 
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.67</appengine-sdk.version> 
    <artemis.version>2.6.3</artemis.version> 
    <aspectj.version>1.9.2</aspectj.version> 
    <assertj.version>3.11.1</assertj.version> 
    <atomikos.version>4.0.6</atomikos.version>
    <bitronix.version>2.1.4</bitronix.version>
    <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version> 
    <byte-buddy.version>1.9.3</byte-buddy.version> 
    <caffeine.version>2.6.2</caffeine.version> 
    <cassandra-driver.version>3.6.0</cassandra-driver.version>
<!-- 其他版本号配置 ... --> 
</properties> 
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId> 
            <version>2.1.2.RELEASE</version> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-actuator</artifactId> 
            <version>2.1.2.RELEASE</version>
        </dependency> 
    <!-- 其他依赖 ... --> 
    </dependencies>
</dependencyManagement>

自定义某个依赖的版本号

Spring Boot Starter Parent 为我们为我们处理了版本依赖的问题,所以强烈建议您在项目的 pom.xml 文件继承它,如下所示:

pom 复制代码
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <!-- 从 Spring Boot 中引入版本依赖 --> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-dependencies</artifactId> 
            <version>2.1.2.RELEASE</version> 
            <type>pom</type> 
            <scope>import</scope> 
        </dependency> 
    </dependencies>
</dependencyManagement>

scope 定义为了 import, 配置完成后,我们就可以自定义某个依赖的版本了:

pom 复制代码
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <!-- 重写版本号 --> 
            <version>2.1.1.RELEASE</version> 
        </dependency> 
    </dependencies>
</dependencyManagement>

之后,我们可以自定义某个依赖的版本号,以 jpa 为例,我们重写了默认的版本号 ,重新定义为我们想要的 2.1.1.RELEASE 版本。

最后

最后,欢迎大家留言,咱们一起讨论技术问题,也可以关注我,回复B01b01,免费领取java面试题!

相关推荐
陈随易6 小时前
在 VSCode 里,把项目一键部署到服务器
前端·后端·程序员
鱼樱前端7 小时前
我用 Claude Code 后,编码效率翻 3 倍。但更值钱的是别的。
前端·后端·ai编程
犀利豆7 小时前
Claude code tools 研究系列-开篇(AskUserQuestion)
后端
颜酱10 小时前
06 | 把 meta_config 同步进 MySQL(生成阶段)
前端·人工智能·后端
IT_陈寒11 小时前
SpringBoot自动配置坑了我一周,原来问题这么蠢!
前端·人工智能·后端
iOS开发上架哦12 小时前
Android代码混淆与iOS加固技术详解
后端·ios
Alan_69113 小时前
商品详情优化三板斧-拆分-多级缓存-GC调参
后端·缓存
Conan在掘金13 小时前
ArkTS 进阶之道(3):为哈禁解构声明?类型一眼可见 vs 推断链断裂
后端
晚安code13 小时前
干掉成山的 if-else:工厂造、策略选,一文讲透两个模式的配合
后端·设计模式
feng尘13 小时前
深度解析布隆过滤器(Bloom Filter):原理、优缺点与 1000 万黑名单实战
后端·面试